var imageCheckboxSets=new Array();
var imageCheckboxSetsNames=new Array();

function parseSqBrStr(str){
 var name,val;
 name=str.split("[");
 if(name.length!=2) return [name[0], 0];

 val=name[1].split("]");
 val=parseInt(val[0], 10);
 if(isNaN(val)) return [name[0], 0];
 return [name[0], val];
}

//recheck imageCheckboxSets
function recheckICS(){
 var ics, icsn;
 for(i=0;i<imageCheckboxSetsNames.length;i++){
  ics=imageCheckboxSets[imageCheckboxSetsNames[i]];
  icsn=ics.names;
  if(ics.count<ics.allow){
   for(var j=0;j<icsn.length;j++){
    if($(icsn[j]).src.match(/\/nocheck1\.gif/)) $(icsn[j]).src='/images/nocheck.gif';
   }
  }
  else {
   for(var j=0;j<icsn.length;j++){
    if($(icsn[j]).src.match(/\/nocheck\.gif/)) $(icsn[j]).src='/images/nocheck1.gif';
   }
  }
 }
}

function makeImageCheckboxes(){
 var cimage;
 $$('img[title^="checkbox"]').each(function(obj){
  var icst, icsp;
  icst=parseSqBrStr(obj.title);
  icsp=parseSqBrStr(obj.name);

  obj.title='';
  obj.id='img_'+obj.name;
  if(icst[1]>0){
   if(typeof imageCheckboxSets[icsp[0]]=='undefined'){
    imageCheckboxSets[icsp[0]]={count: 0, allow: icst[1]};
    imageCheckboxSets[icsp[0]].names=new Array();
    imageCheckboxSetsNames[imageCheckboxSetsNames.length]=icsp[0];
   }
  }
  hiddenel=document.createElement('input');
  hiddenel.type='hidden';
  hiddenel.name=obj.name;
  hiddenel.id=obj.name;
  obj.parentNode.appendChild(hiddenel);

  for(var i=0;i<document.forms.length;i++){
   if(typeof document.forms[i][obj.name]!='undefined') hiddenel=document.forms[i][obj.name];
  }
  if(typeof imageCheckboxSets[icsp[0]]!='undefined') imageCheckboxSets[icsp[0]].names[imageCheckboxSets[icsp[0]].names.length]='img_'+obj.name;
  if(obj.src.match(/\/check\.gif/)){
   if(typeof imageCheckboxSets[icsp[0]]!='undefined'){
    if(imageCheckboxSets[icsp[0]].count<imageCheckboxSets[icsp[0]].allow){
     hiddenel.value='1';
     imageCheckboxSets[icsp[0]].count++;
    }
    else hiddenel.value='0';
   }
   else hiddenel.value='1';
  }
  else hiddenel.value='0';

  Event.observe(obj, 'click', function(){
   for(var i=0;i<document.forms.length;i++){
    if(typeof document.forms[i][obj.name]!='undefined') hiddenel=document.forms[i][obj.name];
   }
   var icspl;
   icspl=parseSqBrStr(obj.name);
   if(typeof imageCheckboxSets[icspl[0]]!='undefined'){
    if(hiddenel.value==1){
     hiddenel.value=0;
     obj.src='/images/nocheck.gif';
     imageCheckboxSets[icspl[0]].count--;
     recheckICS();
    }
    else if(imageCheckboxSets[icspl[0]].count<imageCheckboxSets[icspl[0]].allow){
     hiddenel.value=1;
     obj.src='/images/check.gif';
     imageCheckboxSets[icspl[0]].count++;
     recheckICS();
    }
   }
   else {
    if(hiddenel.value==1){
     hiddenel.value=0;
     obj.src='/images/nocheck.gif';
    }
    else {
     hiddenel.value=1;
     obj.src='/images/check.gif';
    }
   }
  });
 });
 recheckICS();
}

function makeImageRadioButtons(){
 var added=[];
 var name,val;
 $$('img[title="radio"]').each(function(obj){
  obj.title='';
  obj.id=obj.name;
  name=parseSqBrStr(obj.name);
  val=name[1];
  name=name[0];
  if(!in_array(name, added)){
   hiddenel=document.createElement('input');
   hiddenel.type='hidden';
   hiddenel.name=name;
   hiddenel.id=name;
   hiddenel.value='0';
   obj.parentNode.appendChild(hiddenel);
   added[added.length]=name;
  }
  hiddenel=$(name);
  var img=obj.src.split("/");
  img=img[img.length-1];
  if(img=='on.gif') hiddenel.value=val;

  Event.observe(obj, 'click', function(){
   name=parseSqBrStr(obj.name);
   val=name[1];
   name=name[0];
   hiddenel=$(name);
   if(hiddenel.value==val){
    //do nothing
   }
   else {
    if(hiddenel.value>0) $(name+'['+hiddenel.value+']').src='/images/off.gif';
    hiddenel.value=val;
    obj.src='/images/on.gif';
   }
  });
 });
}

var checkboxSets=new Array();
var checkboxSetsNames=new Array();

function getWeight(obj){
 var icspl;
 icspl=parseSqBrStr(obj.name);
 if(typeof checkboxSets[icspl[0]]!='undefined'){
  var ics=checkboxSets[icspl[0]];
  for(var i=0;i<ics.names.length;i++) if(obj.name==ics.names[i].name) return ics.names[i].weight;
 }
 return 0;
}

function prepareCheckboxes(){
 $$('input[type="checkbox"]').each(function(obj){
  var icst,icsp;
  icst=parseSqBrStr(obj.title);
  icsp=parseSqBrStr(obj.name);
  obj.title='';
  obj.id=obj.name;
  if(icst[1]>0){
   if(typeof checkboxSets[icsp[0]]=='undefined'){
    checkboxSets[icsp[0]]={count: 0, allow: icst[1]};
    checkboxSets[icsp[0]].names=new Array();
    checkboxSetsNames[checkboxSetsNames.length]=icsp[0];
   }
  }

  if(typeof checkboxSets[icsp[0]]!='undefined'){
   checkboxSets[icsp[0]].names[checkboxSets[icsp[0]].names.length]={name:obj.name, weight: obj.value};
   if(obj.checked==true) checkboxSets[icsp[0]].count+=parseInt(getWeight(obj));
  }

  Event.observe(obj, 'click', function(){
   var icspl;
   icspl=parseSqBrStr(obj.name);
   if(typeof checkboxSets[icspl[0]]!='undefined'){
    if(obj.checked==false){
     //obj.checked=false;
     checkboxSets[icspl[0]].count-=parseInt(getWeight(obj));
     recheckCS();
    }
    else if(checkboxSets[icspl[0]].count<checkboxSets[icspl[0]].allow){
     //obj.checked=true;
     checkboxSets[icspl[0]].count+=parseInt(getWeight(obj));
//alert(checkboxSets[icspl[0]].count);
     recheckCS();
    }
   }
   else {

   }
  });
 });
 recheckCS();
}

//recheck checkboxSets
function recheckCS(){
 var ics, icsn, obj;
 for(i=0;i<checkboxSetsNames.length;i++){
  ics=checkboxSets[checkboxSetsNames[i]];
  icsn=ics.names;
  for(var j=0;j<icsn.length;j++){
   obj=$(icsn[j].name);
   if(ics.count+parseInt(getWeight(obj))>ics.allow&&obj.checked==false) obj.disabled=true;
   else obj.disabled=false;
  }
 }
}

function checkLenOnKey(e, o, maxlen){
 var e=e||window.event;
 var code=e.keyCode||e.charCode;

 if(o.value.length>maxlen-1&&code-1!=Event.KEY_TAB&&code!=Event.KEY_BACKSPACE&&code!=Event.KEY_ESC&&code!=Event.KEY_DELETE&&code!=Event.KEY_DOWN&&code!=Event.KEY_UP&&code!=Event.KEY_LEFT&&code!=Event.KEY_RIGHT&&code!=67&&code!=88){
  o.value=o.value.substr(0, maxlen); 
  return false;
 }
 return true;
}

function checkLenOnPaste(e, o, maxlen){
 var e=e||window.event;
 var code=e.keyCode||e.charCode;

 if(o.value.length>maxlen-1){
  o.value=o.value.substr(0, maxlen); 
  return false;
 }
 return true;
}

function simple_insert_bbcode(oWindow, formId, textareaId, b_c1, b_c2) {
	var d = eval(oWindow + '.document.forms[\'' + formId + '\'].' + textareaId);
	if (d.setSelectionRange) {
	// Mozilla
		var TextBegin = (d.value).substring(0, d.selectionStart);
		var TextSelected = (d.value).substring(d.selectionStart, d.selectionEnd);
		var TextEnd = (d.value).substring(d.selectionEnd, d.textLength);
		d.value = TextBegin + b_c1 + TextSelected + b_c2 + TextEnd;
		d.focus();
		d.setSelectionRange(TextBegin.length + b_c1.length, TextBegin.length + b_c1.length + TextSelected.length);
	} else if (document.selection ) {
	// Internet Explorer
		// выделенный фрагмент
		d.focus();
		var TextSelected = document.selection.createRange();
		if (TextSelected.text.length > 0) {
			TextSelected.text = b_c1 + TextSelected.text + b_c2;
		} else {
			// если не выделено но нужно поставить именно сюда
			if (d.createTextRange && d.caretPos) {
				var caretPos = d.caretPos;
				caretPos.text = caretPos.text + b_c1 + b_c2;
			} else {
				d.value  += b_c1 + b_c2;
			}
		}
		d.focus();	
	}
	else {
		d.value = d.value + b_c1 + b_c2;
		d.focus();
	}
	if(d.createTextRange) d.caretPos = document.selection.createRange().duplicate();
}

Event.observe(window, 'load', function(){
 makeImageCheckboxes();
 makeImageRadioButtons();
 prepareCheckboxes();
});

