MediaWiki:Resmark.js — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Новая: <source lang="javascript">: //------------------------------------------------------------- </source>)
 
 
(не показано 57 промежуточных версий этого же участника)
Строка 1: Строка 1:
/*<source lang="javascript">*/
+
//<source lang="javascript">
//-------------------------------------------------------------
+
//- Resmark.js ------------------------------------------------------
/*</source>*/
+
 
 +
addOnloadHook(do_resmark_init);
 +
 
 +
var resmark_line1 = 0;
 +
var resmark_line2 = 0;
 +
var resmark_line3 = 0;
 +
var resmark_line4 = 0;
 +
var resmark_line5 = 0;
 +
var resmark_cols = 3;
 +
var resmark_elem = 'res';
 +
var resmark_def_color = Array("#D9C09C","#D9C09C","#D9C09C","#D9C09C","#D9C09C");
 +
var resmark_colors = new Array(
 +
{f:"white",s:"w"},
 +
{f:"gray",s:"gr"},
 +
{f:"violet",s:"v"},
 +
{f:"blue",s:"b"},
 +
{f:"green",s:"g"},
 +
{f:"yellow",s:"y"},
 +
{f:"orange",s:"o"},
 +
{f:"red",s:"r"},
 +
{f:"brown",s:"br"},
 +
{f:"black",s:"bl"},
 +
{f:"goldenrod",s:"au"},
 +
{f:"gainsboro",s:"ag"}
 +
);
 +
var resmark_data = {
 +
res: {
 +
3: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}}
 +
},
 +
4: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}},
 +
4:{dl:{w:1,'y':1,o:1,bl:1},e:{gr:'0.05',v:'0.1',b:'0.25',g:'0.5',r:'2',br:'1',au:'5',ag:'10'}}
 +
},
 +
5: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
4:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}},
 +
5:{dl:{w:1,'y':1,o:1,bl:1},e:{gr:'0.05',v:'0.1',b:'0.25',g:'0.5',r:'2',br:'1',au:'5',ag:'10'}}
 +
}
 +
},
 +
cap: {
 +
3: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}}
 +
},
 +
4: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}},
 +
4:{dl:{v:1,b:1,g:1,'y':1,o:1},e:{w:'+80/-20',gr:'30',r:'2',br:'1',bl:'20',au:'5',ag:'10'}}
 +
},
 +
5: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
4:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}},
 +
5:{dl:{v:1,b:1,g:1,'y':1,o:1},e:{w:'+80/-20',gr:'30',r:'2',br:'1',bl:'20',au:'5',ag:'10'}}
 +
}
 +
},
 +
ind: {
 +
3: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1},e:{o:'*1e-3',r:'*100e-6',br:'*10e-6',bl:'*1e-6',au:'*0.1e-6',ag:'*0.01e-6'}}
 +
},
 +
4: {
 +
1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
 +
2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
 +
3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1},e:{o:'*1e-3',r:'*100e-6',br:'*10e-6',bl:'*1e-6',au:'*0.1e-6',ag:'*0.01e-6'}},
 +
4:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1},e:{bl:'20',au:'5',ag:'10'}}
 +
},
 +
5: {
 +
1:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
 +
2:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
 +
3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
 +
4:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
 +
5:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
 +
}
 +
}
 +
};
 +
 
 +
function do_resmark_init()
 +
{
 +
if(document.getElementById('resmark'))
 +
{ // resmark block exist
 +
var ids = new Array(
 +
{id:'resmark_radio_elm_res',elm:'radio',nm:'elm',onclick:"resmark_elmRes_click()",'checked':1},
 +
{id:'resmark_radio_elm_cap',elm:'radio',nm:'elm',onclick:"resmark_elmCap_click()"},
 +
{id:'resmark_radio_elm_ind',elm:'radio',nm:'elm',onclick:"resmark_elmInd_click()"},
 +
{id:'resmark_radio_lin_3',elm:'radio',nm:'lin',onclick:'resmark_cols=3;resmark_createTable();','checked':1},
 +
{id:'resmark_radio_lin_4',elm:'radio',nm:'lin',onclick:'resmark_cols=4;resmark_createTable();',},
 +
{id:'resmark_radio_lin_5',elm:'radio',nm:'lin',onclick:'resmark_cols=5;resmark_createTable();',},
 +
{id:'resmark_outp_nom',elm:'text'},
 +
{id:'resmark_outp_dop',elm:'text'}
 +
);
 +
var tags = {
 +
radio: {t:'input',tp:'radio'},
 +
'text': {t:'input',tp:'text'}
 +
}
 +
 
 +
for(i = 0; i < ids.length; i++)
 +
{
 +
var old = document.getElementById(ids[i].id);
 +
var elmTag = tags[ids[i].elm].t;
 +
var newElm = document.createElement(elmTag);
 +
 
 +
if(ids[i]['checked']) newElm.setAttribute('checked', ids[i]['checked']);
 +
if(ids[i].onclick) newElm.setAttribute('onclick', ids[i].onclick);
 +
if(ids[i].nm) newElm.setAttribute('name', ids[i].nm);
 +
if(tags[ids[i].elm].t) newElm.setAttribute('type', tags[ids[i].elm].tp);
 +
 +
newElm.setAttribute('id', old.id);
 +
resmark_replDiv(newElm, old);
 +
}
 +
 
 +
resmark_createTable()
 +
 
 +
var js = document.getElementById('resmark_js_disabled');
 +
js.parentNode.removeChild(js);
 +
}
 +
}
 +
 
 +
function resmark_createTable()
 +
{
 +
resmark_resetTable();
 +
for(i = 0; i < resmark_colors.length; i++)
 +
{
 +
for(j = 0; j < resmark_cols; j++)
 +
{
 +
var elm = document.getElementById('resmark_radio_l' + (j+1) + '_' + resmark_colors[i].s);
 +
 
 +
elm.parentNode.style.visibility = (resmark_data[resmark_elem][resmark_cols][j+1]['dl'][resmark_colors[i].s]) ? 'hidden' : 'visible';
 +
 
 +
var newElm = document.createElement('input');
 +
var val = resmark_data[resmark_elem][resmark_cols][j+1]['e'][resmark_colors[i].s]
 +
newElm.setAttribute('type', 'radio');
 +
newElm.setAttribute('name', 'line'+(j+1));
 +
if(val) newElm.setAttribute('value', val);
 +
var onclick = "resmark_line"+(j+1)+"=this.value;";
 +
onclick += "; resmark_setResCol("+(j+1)+", '"+resmark_colors[i].f+"'); resmark_eval();";
 +
newElm.setAttribute('onclick', onclick);
 +
 +
newElm.setAttribute('id', elm.id);
 +
 
 +
if(i==0)
 +
{// init main
 +
resmark_setResCol(j+1, resmark_colors[i].f);
 +
eval("resmark_line"+(j+1)+"=val;");
 +
newElm.setAttribute('checked', 1);
 +
}
 +
if(i==1 && j==3 && resmark_cols==4 && resmark_elem=='res')
 +
{// init 4
 +
resmark_setResCol(j+1, resmark_colors[i].f);
 +
eval("resmark_line"+(j+1)+"=val;");
 +
newElm.setAttribute('checked', 1);
 +
}
 +
if(i==1 && j==4 && resmark_cols==5 && resmark_elem=='res')
 +
{// init 5
 +
resmark_setResCol(j+1, resmark_colors[i].f);
 +
eval("resmark_line"+(j+1)+"=val;");
 +
newElm.setAttribute('checked', 1);
 +
}
 +
if(i==6 && j==2 && resmark_cols>=3 && resmark_elem=='ind')
 +
{// init 4
 +
resmark_setResCol(j+1, resmark_colors[i].f);
 +
eval("resmark_line"+(j+1)+"=val;");
 +
newElm.setAttribute('checked', 1);
 +
}
 +
if(i==9 && j==3 && resmark_cols==4 && resmark_elem=='ind')
 +
{// init 4
 +
resmark_setResCol(j+1, resmark_colors[i].f);
 +
eval("resmark_line"+(j+1)+"=val;");
 +
newElm.setAttribute('checked', 1);
 +
}
 +
 
 +
resmark_replDiv(newElm, elm);
 +
}
 +
}
 +
if(resmark_cols==5 && resmark_elem=='ind')
 +
{
 +
resmark_line1 = 0;
 +
resmark_line2 = 0;
 +
resmark_line3 = 0;
 +
resmark_line4 = 0;
 +
resmark_line5 = 'NONE!';
 +
resmark_resetTable();
 +
}
 +
 +
resmark_eval();
 +
}
 +
 
 +
function resmark_resetTable()
 +
{
 +
for(i = 0; i < resmark_colors.length; i++)
 +
{
 +
for(j = 0; j < 5; j++)
 +
{
 +
var elm = document.getElementById('resmark_radio_l' + (j+1) + '_' + resmark_colors[i].s);
 +
elm.parentNode.style.visibility = 'hidden';
 +
var newElm = document.createElement('div');
 +
newElm.setAttribute('id', elm.id);
 +
resmark_replDiv(newElm, elm);
 +
}
 +
}
 +
resmark_setResCols(resmark_def_color);
 +
}
 +
 
 +
function resmark_eval()
 +
{
 +
var nom = document.getElementById('resmark_outp_nom');
 +
var dop = document.getElementById('resmark_outp_dop');
 +
switch(resmark_cols)
 +
{
 +
case 3:
 +
var temp = eval(resmark_line1 + resmark_line2 + resmark_line3);
 +
nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp;
 +
dop.value = '';
 +
break;
 +
case 4:
 +
var temp = eval(resmark_line1 + resmark_line2 + resmark_line3);
 +
nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp;
 +
dop.value = resmark_line4 + '%';
 +
break;
 +
case 5:
 +
var temp = eval(resmark_line1 + resmark_line2 + resmark_line3 + resmark_line4);
 +
nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp;
 +
dop.value = resmark_line5 + '%';
 +
break;
 +
}
 +
}
 +
 
 +
//- element radio ------------------------------------------------------
 +
function resmark_elmRes_click()
 +
{
 +
resmark_hideMsg(0);
 +
resmark_elem = 'res';
 +
resmark_createTable();
 +
}
 +
function resmark_elmCap_click()
 +
{
 +
resmark_hideMsg(1);
 +
resmark_elem = 'cap';
 +
resmark_createTable();
 +
}
 +
function resmark_elmInd_click()
 +
{
 +
resmark_hideMsg(0);
 +
resmark_elem = 'ind';
 +
resmark_createTable();
 +
}
 +
function resmark_hideMsg(hide)
 +
{
 +
var e = document.getElementById('resmark_outp_note');
 +
e.innerHTML = (hide) ? '<b>Примечание:</b> Для цветовой кодировки постоянных конденсаторов на практике используется несколько методик. Здесь представлена одна из них.' : '';
 +
}
 +
 
 +
//- other ------------------------------------------------------
 +
function resmark_ind(full)
 +
{
 +
if(Math.round(full * 1e+3))
 +
{
 +
return (full * 1e+3) + ' мГн'
 +
}
 +
if(Math.round(full * 1e+6))
 +
{
 +
return (full * 1e+6) + ' мкГн'
 +
}
 +
return (full) + ' Гн'
 +
}
 +
function resmark_cap(full)
 +
{
 +
if(Math.round(full * 1e+3))
 +
{
 +
return (full * 1e+3) + ' мФ'
 +
}
 +
if(Math.round(full * 1e+6))
 +
{
 +
return (full * 1e+6) + ' мкФ'
 +
}
 +
if(Math.round(full * 1e+9))
 +
{
 +
return (full * 1e+9) + ' нФ'
 +
}
 +
if(Math.round(full * 1e+12))
 +
{
 +
return (full * 1e+12) + ' пФ'
 +
}
 +
return (full) + ' Ф'
 +
}
 +
function resmark_ohm(full)
 +
{
 +
if(Math.round(full / 1e+9))
 +
{
 +
return (full/1e+9) + ' ГОм'
 +
}
 +
if(Math.round(full / 1e+6))
 +
{
 +
return (full/1e+6) + ' МОм'
 +
}
 +
if(Math.round(full / 1e+3))
 +
{
 +
return (full/1e+3) + ' кОм'
 +
}
 +
return (full) + ' Ом'
 +
}
 +
 
 +
function resmark_setResCol(col, color)
 +
{
 +
elm = document.getElementById('resmark_resistor_' + col);
 +
elm.style.background = color;
 +
}
 +
function resmark_setResCols(colors)
 +
{
 +
for(i = 0; i < colors.length; i++)
 +
{
 +
elm = document.getElementById('resmark_resistor_' + (i+1));
 +
elm.style.background = colors[i];
 +
}
 +
}
 +
 
 +
function resmark_replDiv(newElm, div)
 +
{
 +
div.parentNode.replaceChild(newElm, div);
 +
}
 +
//</source>

Текущая версия на 17:26, 3 октября 2007

//<source lang="javascript">
//- Resmark.js ------------------------------------------------------

addOnloadHook(do_resmark_init);

var resmark_line1 = 0;
var resmark_line2 = 0;
var resmark_line3 = 0;
var resmark_line4 = 0;
var resmark_line5 = 0;
var resmark_cols = 3;
var resmark_elem = 'res';
var resmark_def_color = Array("#D9C09C","#D9C09C","#D9C09C","#D9C09C","#D9C09C");
var resmark_colors = new Array(
	{f:"white",s:"w"},
	{f:"gray",s:"gr"},
	{f:"violet",s:"v"},
	{f:"blue",s:"b"},
	{f:"green",s:"g"},
	{f:"yellow",s:"y"},
	{f:"orange",s:"o"},
	{f:"red",s:"r"},
	{f:"brown",s:"br"},
	{f:"black",s:"bl"},
	{f:"goldenrod",s:"au"},
	{f:"gainsboro",s:"ag"}
);
var resmark_data = {
	res: {
		3: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}}
		},
		4: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}},
			4:{dl:{w:1,'y':1,o:1,bl:1},e:{gr:'0.05',v:'0.1',b:'0.25',g:'0.5',r:'2',br:'1',au:'5',ag:'10'}}
		},
		5: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			4:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}},
			5:{dl:{w:1,'y':1,o:1,bl:1},e:{gr:'0.05',v:'0.1',b:'0.25',g:'0.5',r:'2',br:'1',au:'5',ag:'10'}}
		}
	},
	cap: {
		3: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}}
		},
		4: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}},
			4:{dl:{v:1,b:1,g:1,'y':1,o:1},e:{w:'+80/-20',gr:'30',r:'2',br:'1',bl:'20',au:'5',ag:'10'}}
		},
		5: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			4:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}},
			5:{dl:{v:1,b:1,g:1,'y':1,o:1},e:{w:'+80/-20',gr:'30',r:'2',br:'1',bl:'20',au:'5',ag:'10'}}
		}
	},
	ind: {
		3: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1},e:{o:'*1e-3',r:'*100e-6',br:'*10e-6',bl:'*1e-6',au:'*0.1e-6',ag:'*0.01e-6'}}
		},
		4: {
			1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}},
			2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}},
			3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1},e:{o:'*1e-3',r:'*100e-6',br:'*10e-6',bl:'*1e-6',au:'*0.1e-6',ag:'*0.01e-6'}},
			4:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1},e:{bl:'20',au:'5',ag:'10'}}
		},
		5: {
			1:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
			2:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
			3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
			4:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
			5:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}},
		}
	}
};

function do_resmark_init()
{
	if(document.getElementById('resmark'))
	{ // resmark block exist
		var ids = new Array(
				{id:'resmark_radio_elm_res',elm:'radio',nm:'elm',onclick:"resmark_elmRes_click()",'checked':1},
				{id:'resmark_radio_elm_cap',elm:'radio',nm:'elm',onclick:"resmark_elmCap_click()"},
				{id:'resmark_radio_elm_ind',elm:'radio',nm:'elm',onclick:"resmark_elmInd_click()"},
				{id:'resmark_radio_lin_3',elm:'radio',nm:'lin',onclick:'resmark_cols=3;resmark_createTable();','checked':1},
				{id:'resmark_radio_lin_4',elm:'radio',nm:'lin',onclick:'resmark_cols=4;resmark_createTable();',},
				{id:'resmark_radio_lin_5',elm:'radio',nm:'lin',onclick:'resmark_cols=5;resmark_createTable();',},
				{id:'resmark_outp_nom',elm:'text'},
				{id:'resmark_outp_dop',elm:'text'}
			);
		var tags = {
			radio: {t:'input',tp:'radio'},
			'text': {t:'input',tp:'text'}
		}

		for(i = 0; i < ids.length; i++)
		{
			var old = document.getElementById(ids[i].id);
			var elmTag = tags[ids[i].elm].t;
			var newElm = document.createElement(elmTag);

			if(ids[i]['checked']) newElm.setAttribute('checked', ids[i]['checked']);
			if(ids[i].onclick) newElm.setAttribute('onclick', ids[i].onclick);
			if(ids[i].nm) newElm.setAttribute('name', ids[i].nm);
			if(tags[ids[i].elm].t) newElm.setAttribute('type', tags[ids[i].elm].tp);
			
			newElm.setAttribute('id', old.id);
			resmark_replDiv(newElm, old);
		}

		resmark_createTable()

		var js = document.getElementById('resmark_js_disabled');
		js.parentNode.removeChild(js);
	}
}

function resmark_createTable()
{
	resmark_resetTable();
	for(i = 0; i < resmark_colors.length; i++)
	{
		for(j = 0; j < resmark_cols; j++)
		{
			var elm = document.getElementById('resmark_radio_l' + (j+1) + '_' + resmark_colors[i].s);

			elm.parentNode.style.visibility = (resmark_data[resmark_elem][resmark_cols][j+1]['dl'][resmark_colors[i].s]) ? 'hidden' : 'visible';

			var newElm = document.createElement('input');
			var val = resmark_data[resmark_elem][resmark_cols][j+1]['e'][resmark_colors[i].s]
			newElm.setAttribute('type', 'radio');
			newElm.setAttribute('name', 'line'+(j+1));
			if(val) newElm.setAttribute('value', val);
			var onclick = "resmark_line"+(j+1)+"=this.value;";
			onclick += "; resmark_setResCol("+(j+1)+", '"+resmark_colors[i].f+"'); resmark_eval();";
			newElm.setAttribute('onclick', onclick);
			
			newElm.setAttribute('id', elm.id);

			if(i==0)
			{// init main
				resmark_setResCol(j+1, resmark_colors[i].f);
				eval("resmark_line"+(j+1)+"=val;");
				newElm.setAttribute('checked', 1);
			}
			if(i==1 && j==3 && resmark_cols==4 && resmark_elem=='res')
			{// init 4
				resmark_setResCol(j+1, resmark_colors[i].f);
				eval("resmark_line"+(j+1)+"=val;");
				newElm.setAttribute('checked', 1);
			}
			if(i==1 && j==4 && resmark_cols==5 && resmark_elem=='res')
			{// init 5
				resmark_setResCol(j+1, resmark_colors[i].f);
				eval("resmark_line"+(j+1)+"=val;");
				newElm.setAttribute('checked', 1);
			}
			if(i==6 && j==2 && resmark_cols>=3 && resmark_elem=='ind')
			{// init 4
				resmark_setResCol(j+1, resmark_colors[i].f);
				eval("resmark_line"+(j+1)+"=val;");
				newElm.setAttribute('checked', 1);
			}
			if(i==9 && j==3 && resmark_cols==4 && resmark_elem=='ind')
			{// init 4
				resmark_setResCol(j+1, resmark_colors[i].f);
				eval("resmark_line"+(j+1)+"=val;");
				newElm.setAttribute('checked', 1);
			}

			resmark_replDiv(newElm, elm);
		}
	}
	if(resmark_cols==5 && resmark_elem=='ind')
	{
		resmark_line1 = 0;
		resmark_line2 = 0;
		resmark_line3 = 0;
		resmark_line4 = 0;
		resmark_line5 = 'NONE!';
		resmark_resetTable();
	}
	
	resmark_eval();
}

function resmark_resetTable()
{
	for(i = 0; i < resmark_colors.length; i++)
	{
		for(j = 0; j < 5; j++)
		{
			var elm = document.getElementById('resmark_radio_l' + (j+1) + '_' + resmark_colors[i].s);
			elm.parentNode.style.visibility = 'hidden';
			var newElm = document.createElement('div');
			newElm.setAttribute('id', elm.id);
			resmark_replDiv(newElm, elm);
		}
	}
	resmark_setResCols(resmark_def_color);
}

function resmark_eval()
{
	var nom = document.getElementById('resmark_outp_nom');
	var dop = document.getElementById('resmark_outp_dop');
	switch(resmark_cols)
	{
		case 3:
			var temp = eval(resmark_line1 + resmark_line2 + resmark_line3);
			nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp;
			dop.value = '';
			break;
		case 4:
			var temp = eval(resmark_line1 + resmark_line2 + resmark_line3);
			nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp;
			dop.value = resmark_line4 + '%';
			break;
		case 5:
			var temp = eval(resmark_line1 + resmark_line2 + resmark_line3 + resmark_line4);
			nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp;
			dop.value = resmark_line5 + '%';
			break;
	}
}

//- element radio ------------------------------------------------------
function resmark_elmRes_click()
{
	resmark_hideMsg(0);
	resmark_elem = 'res';
	resmark_createTable();
}
function resmark_elmCap_click()
{
	resmark_hideMsg(1);
	resmark_elem = 'cap';
	resmark_createTable();
}
function resmark_elmInd_click()
{
	resmark_hideMsg(0);
	resmark_elem = 'ind';
	resmark_createTable();
}
function resmark_hideMsg(hide)
{
	var e = document.getElementById('resmark_outp_note');
	e.innerHTML = (hide) ? '<b>Примечание:</b> Для цветовой кодировки постоянных конденсаторов на практике используется несколько методик. Здесь представлена одна из них.' : '';
}

//- other ------------------------------------------------------
function resmark_ind(full)
{
	if(Math.round(full * 1e+3))
	{
		return (full * 1e+3) + ' мГн'
	}
	if(Math.round(full * 1e+6))
	{
		return (full * 1e+6) + ' мкГн'
	}
	return (full) + ' Гн'
}
function resmark_cap(full)
{
	if(Math.round(full * 1e+3))
	{
		return (full * 1e+3) + ' мФ'
	}
	if(Math.round(full * 1e+6))
	{
		return (full * 1e+6) + ' мкФ'
	}
	if(Math.round(full * 1e+9))
	{
		return (full * 1e+9) + ' нФ'
	}
	if(Math.round(full * 1e+12))
	{
		return (full * 1e+12) + ' пФ'
	}
	return (full) + ' Ф'
}
function resmark_ohm(full)
{
	if(Math.round(full / 1e+9))
	{
		return (full/1e+9) + ' ГОм'
	}
	if(Math.round(full / 1e+6))
	{
		return (full/1e+6) + ' МОм'
	}
	if(Math.round(full / 1e+3))
	{
		return (full/1e+3) + ' кОм'
	}
	return (full) + ' Ом'
}

function resmark_setResCol(col, color)
{
	elm = document.getElementById('resmark_resistor_' + col);
	elm.style.background = color;
}
function resmark_setResCols(colors)
{
	for(i = 0; i < colors.length; i++)
	{
		elm = document.getElementById('resmark_resistor_' + (i+1));
		elm.style.background = colors[i];
	}
}

function resmark_replDiv(newElm, div)
{
	div.parentNode.replaceChild(newElm, div);
}
//</source>