function setdisplay(el){
	
	if(el.defdisplay==null) return false;
	if(el.isdisplay==null || el.isdisplay==false){
		el.isdisplay=true;
		el.style.display=el.defdisplay;
		if(el.ondisplay!=null) el.ondisplay();
		
	}
	return true;
}
function setnotdisplay(el){
	if(el.isdisplay==null || el.isdisplay==true){
		
		el.isdisplay=false;
		if(el.defdisplay==null) el.defdisplay=el.style.display;
		
		el.style.display='none';
		if(el.ondisplay!=null) el.ondisplay();
	}
}
/*function setdisplay(el){
	
	if(el.isdisplay==null || el.isdisplay==false){
		el.isdisplay=true;
		var tmp_el=document.createElement('div');
		el.style.display=tmp_el.style.display='block';
		if(el.name=='totalcurrency_in') alert(tmp_el.style.display);
		if(el.ondisplay!=null) el.ondisplay();
	}
	return true;
}
function setnotdisplay(el){
	
	if(el.isdisplay==null || el.isdisplay==true){
		el.isdisplay=false;
		el.style.display='none';
		if(el.name=='totalcurrency_in') alert('h:'+el.style.display);
		if(el.ondisplay!=null) el.ondisplay();
	}
}*/


function getElementByFormName(form,name){
	var els=form.elements;
	for(var i=0; i<els.length; i++)
		if(els[i].name==name)
			return els[i];
	return null;
}

function getFuncChangeStructure(el){
	//el - is sub element
	return function(){
		
		//alert(el.name);
		//change structure of sub element
		el.options.length=0;
		for(var i=0; i<el.values.length; i++){
			var contin=false;

			//chack for already inserted
			for(var j=0; j<el.options.length; j++){
				if(el.options[j].value==el.values[i]) {
					contin=true;
					break;
				}
			}
			if(contin) continue;
			
			//chack for exist in parent
			parentel=el.parenttypeelement;
			while(parentel!=null){
				//alert(parentel.values[i]+' '+parentel.value);
				if(parentel.values[i]!=parentel.value) {
					contin=true;
					break;
				}
				parentel=parentel.parenttypeelement;
			}
			if(contin) continue;


			v=el.values[i]
			//find text in vals array
			for(var j=0; j<el.names.length; j++){
				if(v==el.names[j][0]){
					el.options[el.options.length]=new Option(el.names[j][1],v);
					if(el.names[j][0]==el.def_val){
						el.selectedIndex=el.options.length-1;
						
						//if(el.def_val=='')
					}
				}
			}


		}
		/*if(el.name=='totalcurrency_in'){
			var kgg=el.names;
			kgg.sort();
			alert(kgg);
		}*/
		//hide selects with text '------'
		var elgggg=el.parentNode.parentNode;
		if(el.options.length==1 && (el.options[0].text=="------" || el.options[0].text=="")){
			
			setnotdisplay(el);
			var descrs=el.form.captions;
			for(var ii=0;ii<descrs.length;ii++){
				if(descrs[ii].name==el.name){
					setnotdisplay(descrs[ii].descrel);
				}
			}
		}
		else {
			
			if(el.options.length==1){
				el.text_el.innerText=el.value;
				setdisplay(el.text_el);
				setnotdisplay(el);
			}
			else{
				setdisplay(el);
				setnotdisplay(el.text_el);
			}

			var descrs=el.form.captions;
			for(var ii=0;ii<descrs.length;ii++){
				if(descrs[ii].name==el.name){
					setdisplay(descrs[ii].descrel);
				}
			}
		}
		
		
		el.onchange();
	}
}
function registerSelectCaption(elementid,elementname/*,text*/){
	/*var elementid='rendomelement'+Math.round(Math.random()*100000);
	document.write('<span id="'+elementid+'">'+text+'</span>');*/
	var el=document.getElementById(elementid);
	var form=el;
	while(form!=null && form.tagName!='FORM') form=form.parentNode;
	if(form==null) return;
	if(form.captions==null) form.captions=new Array();
	form.captions[form.captions.length]={name:elementname,descrel:el};
}

function registerSelect(elementid,thiselementname,parentelementname,names,values,def_val){
	/*var elementid='rendomelement'+Math.round(Math.random()*100000);
	document.write('<select id="'+elementid+'" name='+thiselementname+'></select>');*/
	var el=document.getElementById(elementid);
	el.name=thiselementname;
	var span=document.createElement('span');
	el.parentNode.insertBefore(span,el);
	setnotdisplay(span);
	el.text_el=span;

	if(names!=null) el.names=names;
	else {
		el.names=new Array();
		if(values!=null) 
			for(var i=0;i<values.length; i++)
				el.names[el.names.length]=new Array(values[i],values[i]);
	}
		/*if(el.name=='totalcurrency_in'){
			var kgg=el.names;
			kgg.sort();
			alert(kgg);
		}*/
	el.values=values;
	el.def_val=def_val;
	el.onchangefuncs= new Array();
	el.onchange=function(){
		for(var i=0;i<el.onchangefuncs.length; i++){
				el.onchangefuncs[i].func();
		}
	}
	
	//if this element have parent
	if(parentelementname!=null){
		//find parent element by name
		var els=el.form.elements;
		for(var i=0; i<els.length; i++){
			if(els[i].name==parentelementname){
				el.parenttypeelement=els[i];
				//els[i].onchangefuncs[els[i].onchangefuncs.length]={func:getFuncChangeStructure(el)};
				els[i].onchangefuncs[els[i].onchangefuncs.length]={func:getFuncChangeStructure(el)};
				els[i].onchange();
			}
		}
	}
	else {
		//insert all options in select from veriable vals
		el.options.length=0;
		for(var i=0; i<el.names.length; i++){
			el.options[el.options.length]=new Option(el.names[i][1],el.names[i][0]);
			if(el.names[i][0]==el.def_val){
				el.selectedIndex=el.options.length-1;
			}
		}
			
	}
	return el;
	//el.selectedIndex=def_val;
	
}


function insertTotalField(price_el,pages_name){
	price_el.defdisplay='none';
	price_el.style.display='none';
	price_el.text_el.defdisplay='none';
	price_el.text_el.style.display='none';
	var elementid='rendomelement'+Math.round(Math.random()*100000);
	var div=document.createElement('div');
	div.innerHTML='<input class="inp_text" id="'+elementid+'" type="text"/><select name=currency onchange="getElementByFormName(this.form,\''+price_el.name+'\').onchange();"><option value="1">USD</option><option value="1.17957">CAD</option><option value="0.5589255">GBP</option><option value="1.378881">AUD</option><option value="1.628382">DEM</option></select>';
	price_el.parentNode.appendChild(div);
	
	//document.write('<input class="inp_text" id="'+elementid+'" type="text"/>');
	
	//document.write('<select name=currency onchange="getElementByFormName(this.form,\''+price_el.name+'\').onchange();"><option value="1">USD</option><option value="1.17957">CAD</option><option value="0.5589255">GBP</option><option value="1.378881">AUD</option><option value="1.628382">DEM</option></select>');
	
	var el=document.getElementById(elementid);
	el.readOnly=true;
	var pages=getElementByFormName(el.form,pages_name);
	var currency=getElementByFormName(el.form,'currency');

	price_el.onchangefuncs[price_el.onchangefuncs.length]={
		func:function(){
			//alert(price_el.value+', '+pages.value+', '+currency.value);
			var v = Math.floor(price_el.value * pages.value * currency.value * 100)/100;
			el.value=isNaN(v)?'--':v;
		}
	};
	
	price_el.onchange();
	
}

function regTotalFieldAdd(curvalue,num_pages_name,price,div){
	var elementid='rendomelement'+Math.round(Math.random()*100000);
		
	div.innerHTML='<input class="inp_text" id="'+elementid+'" type="text"/><select name=currency onchange="getElementById(\''+elementid+'\').onchange();"><option value="1">USD</option><option value="1.17957">CAD</option><option value="0.5589255">GBP</option><option value="1.378881">AUD</option><option value="1.628382">DEM</option></select>';
	
	//document.write('<input class="inp_text" id="'+elementid+'" type="text"/>');
	
	//document.write('<select name=currency onchange="getElementById(\''+elementid+'\').onchange();"><option value="1">USD</option><option value="1.17957">CAD</option><option value="0.5589255">GBP</option><option value="1.378881">AUD</option><option value="1.628382">DEM</option></select>');
	
	var el_total=document.getElementById(elementid);
	var currency=getElementByFormName(el_total.form,'currency');
	var el_num_pages=getElementByFormName(el_total.form,num_pages_name);
	
	el_num_pages.onchange=function(){
		el_total.onchange();
	}
	
	el_total.readOnly=true;
	
	el_total.onchange=function(){
		var v = Math.floor((curvalue * 1 + price * el_num_pages.value) * currency.value * 100)/100;
		el_total.value=curvalue+'+'+(price * el_num_pages.value)+'='+(isNaN(v)?'--':v);
	}
	
	el_total.onchange();
}


function checkAgree(f) {
	if(!f.agree.checked) {
		alert('You have to agree with our Terms And Conditions!');
		return false;
	}else return true;
}





function registerDependedEl(parent_id,depended_id,formula){
	var parent=document.getElementById(parent_id);
	var depended=(depended_id==null)?null:document.getElementById(depended_id);
	var parent_onchange=(parent.onchange==null)?null:parent.onchange;
	if(formula!=null){
		if(typeof(formula)=="function")
			parent.onchange=function(){
				if(parent_onchange!=null) parent_onchange();
				formula(parent,depended);
			}
		else if(typeof(formula)=="string")
			parent.onchange=function(){
				if(parent_onchange!=null) parent_onchange();
				eval(formula);
			}
	}
	else if(depended!=null){
		//alert(document.getElementById(depended_id));
		var tn=depended.tagName.toLowerCase();
		if(tn=='select' || tn=='input')
			parent.onchange=function(){
				if(parent_onchange!=null) parent_onchange();
				depended.value=parent.value;
			}
		else
			parent.onchange=function(){
				if(parent_onchange!=null) parent_onchange();
				depended.innerHTML=parent.value;
			}
	}
	else return false;
	/*parent.onchange=function(){
		if(parent_onchange!=null) parent_onchange();
		var tn=depended.tagName.toLowerCase();
		var value=parent.value;
		if(formula!=null){
			//alert(formula);
			eval(formula); //convert value formula
		}
		else {
			if(tn=='select' || tn=='input') depended.value=value;
			else depended.innerHTML=value;
		}
	}*/
	parent.onchange();
	return true;
}

