function dm_browser_find()
{
	var findBrowser = new String(navigator.userAgent);
	if (findBrowser.search('MSIE')!=-1){
		return 'IE';
	} else if (findBrowser.search('Gecko')!=-1){
		return 'Mozilla';	
	}
}
var dm_browser=dm_browser_find();

function dm_window_open(file, width, height)
{
	window.open(file, "_blank", "width="+width+",height="+height+",titlebar=no,toolbar=no,location=no,status=no,menubar=yes,scrollbars=yes,resizable=yes");
}

function img_move(num,text_el,order) 
{
	if (order!=undefined){
		img_first=num;
	} else {
		img_first = (img_first + num + article_img.length) % article_img.length;
	}
	document.images.article_img.width = article_img[img_first].width;
	document.images.article_img.height = article_img[img_first].height;
	document.images.article_img.src = article_img[img_first].src;
	document.getElementById(text_el).innerHTML=article_img[img_first].alt;
}


//////////////////////////////////
function dm_return(){
var loc=window.location;
window.location=loc;
return true;
}

///////////////////////////////////
function dm_explode_new(separator,_string)
{
	var new_string=new String(_string);
	var i=0;
	var arr=new Array();
	while (new_string.indexOf(separator)!=-1){
		var last_string=new_string.substring(0,new_string.indexOf(separator));
		new_string=new_string.substring(new_string.indexOf(separator)+1,new_string.length);
		arr[i]=last_string;
		i++;	
	}
	if (new_string.length>0) {
		arr[i]=new_string;
	}
	
	return arr;
	
}
function dm_explode(separator,_string){
var new_string=new String(_string);
var position=new_string.indexOf(separator);
if (position!=-1){
var arr = new Array(new_string.substring(0,position),new_string.substring(position+1,new_string.length));
return arr;
}
else {
return false;
}
}
///////////////////////////////////
function dm_iu_container_add(typeId,pref)
{
	if (dm_browser=='IE'){	
		dm_iu_container_build();
		dm_container_add(typeId,pref);
	} else if (dm_browser=='Mozilla'){
		dm_container_add(typeId,pref);
		dm_iu_container_build();
	}	
	//alert(dm_iu_num);
}

function dm_iu_container_build()
{
	var fields=new Array("dm_iu_file:dm_iu_file","dm_iu_alt:dm_iu_alt","dm_iu_symbols:dm_iu_symbols");
	for (var i=0;i<fields.length;i++){
		var el_id=dm_explode(":",fields[i])[0];
		var el_name=dm_explode(":",fields[i])[1];
		document.getElementById(el_id).setAttribute("name",el_name+"["+ dm_iu_num +"]");
	}
	var maxlength=document.getElementById("dm_iu_alt").getAttribute("maxlength");
	document.getElementById("dm_iu_symbols").innerHTML=maxlength;
	dm_iu_num++;
}

function dm_container_add(typeId,pref)
{
	var dataRow=document.getElementById(pref).rows[typeId].cloneNode(true);
	mixedList=document.getElementById(pref+"_result");
	mixedList.tBodies[0].appendChild(dataRow.cloneNode(true));
}

function dm_parent_find(innerObject,parent_name)
{
	currentObject=innerObject;
	while (currentObject.className != parent_name) {
		currentObject = currentObject.parentNode;
	}
	return currentObject;
}

function dm_el_number(el,number)
{
	var mystring=new String(el);
	var arr=mystring.match(/^.*\[(\d*)\]$/i);
	if (number==true){
		return arr[1];
	} else {
		return "["+arr[1]+"]";
	}
}

function dm_symbols_remain(max_symbols,el_form,el_symbol)
{
	if(el_form.value.length > max_symbols){
		el_form.value = el_form.value.substring(0, max_symbols);	
		return;
	}
	var span_list=document.getElementsByTagName("span");
	for (e=0;e<span_list.length;e++){
		if (span_list[e].getAttribute("name")==el_symbol){
			document.getElementsByTagName("span")[e].innerHTML = max_symbols-el_form.value.length;
		}	
	}
}

function dm_iu_symbols_remain(max_symbols,el_form,el_symbol)
{
	if(el_form.value.length > max_symbols){
	el_form.value = el_form.value.substring(0, max_symbols);	
	return;
	}
	var el_parent=dm_parent_find(el_form,'container_begin');
	var el_number=dm_el_number(el_form.name);	
	var span_list=el_parent.getElementsByTagName("span");
	for (e=0;e<span_list.length;e++){
		if (span_list[e].getAttribute("name")==el_symbol+el_number){
			el_parent.getElementsByTagName("span")[e].innerHTML = max_symbols-el_form.value.length;
		}		
	}
}

function validNumeric(el,name,isInteger){
        if (isInteger){
                if (("" + parseInt(el.value)) != el.value){
                        validError(el,name,"Integer Expected");
                        return false;
                }
        } else
        if (("" + parseFloat(el.value)) != el.value){
                validError(el,name,"Number Expected");
                return false;
        }
        return true;
}
function validError(el,name,message){
        //alert(el.focus());
		if (el.focus!=null){
                el.focus();
        }
        alert('Field "'+name+'": '+message);
}
function validLength(el,name,min,max){
        if (el.length){
                for (var z=0;z<el.length;z++){
                        if (el[z].checked) return true;
                }
                validError(el,name,"Blanc Value");
                return false;
        }
        if (el.value==null || !el.value.length>0){
                validError(el,name,"Blanc Value");
                return false;
        } else if (min!=null){
        	if (el.value.length<min){
        		validError(el,name,"Please enter at least "+min+" characters");
                return false;
        	}
        } else if (max!=null){
        	if (el.value.length>max){
        		validError(el,name,"Please enter at most "+max+" characters");
                return false;
        	}
        }
        return true;
	
}
function validNotNull(el,name){
        //alert(el);
       if (el.length){
                for (var z=0;z<el.length;z++){
                        if (el[z].checked) return true;
                }
                validError(el,name,"Blanc Value");
                return false;
        }
        if (el.value==null || !el.value.length>0){
                validError(el,name,"Blanc Value");
                return false;
        }
        return true;
}

function validRegexp(el,name,exp){
	if (!el.value.match(exp)){
		validError(el,name,"Incorrect Format");
		return false;
	}
	return true;
}
function validIsEmail(el,name){
        var emailStr=el.value.toLowerCase();
        var checkTLD=1;
        var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
        var emailPat=/^(.+)@(.+)$/;
        var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
        var validChars="\[^\\s" + specialChars + "\]";
        var quotedUser="(\"[^\"]*\")";

        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
        var atom=validChars + '+';
        var word="(" + atom + "|" + quotedUser + ")";
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
        var matchArray=emailStr.match(emailPat);

        if (matchArray==null) {
                validError(el,name,"Incorrect Email Address");
                return false;
        }

        var user=matchArray[1];
        var domain=matchArray[2];

        for (i=0; i<user.length; i++){
                if (user.charCodeAt(i)>127) {
                        validError(el,name,"Incorrect Symbols in Email User Name");
                return false;
           }
        }
        for (i=0; i<domain.length; i++) {
                if (domain.charCodeAt(i)>127) {
                        validError(el,name,"Incorrect Symbols in Email Address Domain");
                return false;
           }
        }

        if (user.match(userPat)==null) {
                validError(el,name,"Incorrect User Name");
                return false;
        }

        var IPArray=domain.match(ipDomainPat);
        if (IPArray!=null) {
                for (var i=1;i<=4;i++) {
                        if (IPArray[i]>255) {
                                validError(el,name,"Incorrect IP");
                                return false;
                        }
                }
                return true;
        }

        var atomPat=new RegExp("^" + atom + "$");
        var domArr=domain.split(".");
        var len=domArr.length;
        for (i=0;i<len;i++) {
                if (domArr[i].search(atomPat)==-1) {
                        validError(el,name,"Incorrect Domain Name");
                        return false;
                }
        }

        if (checkTLD && domArr[domArr.length-1].length!=2 &&
                domArr[domArr.length-1].search(knownDomsPat)==-1) {
                validError(el,name,"Incorrect Symbol at the End of Domain Name");
                return false;
        }

        if (len<2) {
                validError(el,name,"No Domain Name in Address");
                return false;
        }
        return true;
}
function dm_check_form(form_el,check_fields){
	var resv2=true;
	//alert(form_el);
	for (var i=0;i<check_fields.length;i++){
		var arr=dm_explode_new(":",check_fields[i]);
		var el=arr[0];
		var check_expr=arr[1];
		var name=arr[2];
		switch (check_expr) { 
			case "null":
			resv2=resv2 && validNotNull(form_el.elements[el],name);
			break;	
			case "email":
			resv2=resv2 && validIsEmail(form_el.elements[el],name);
			break;	
			case "float":
			resv2=resv2 && validNumeric(form_el.elements[el],name);
			break;	
			case "integer":
			resv2=resv2 && validNumeric(form_el.elements[el],name,true);
			break;	
			case "min":
			var min=arr[3];
			resv2=resv2 && validLength(form_el.elements[el],name,min,null);
			break;				
			case "max":
			var max=arr[3];
			resv2=resv2 && validLength(form_el.elements[el],name,null,max);
			break;	
			case "color":
			resv2=resv2 && validRegexp(form_el.elements[el],name,/^[0-9a-fA-F]{6}$/);
			break;	
			
		}
	}
	return resv2;	
}
function MM_swapImgRestore() 
{ //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() 
{ //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) 
{ //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() 
{ //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_jumpMenu(targ,selObj,restore)
{ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function set_check_range(the_form, do_check,el) {
	for (var i = 0; i < document.forms[the_form].elements.length; i++) {
		if (document.forms[the_form].elements[i].type=='checkbox'){
			if (el!=undefined) {
				var arr=document.forms[the_form].elements[i].name.match(/^(.*)\[\d*\]$/i);
				if (arr!=null && arr[1] && arr[1]==el){
					document.forms[the_form].elements[i].checked = do_check;
				}
			} else {
				document.forms[the_form].elements[i].checked = do_check;
			}
		}
	}
	return true;
} 
function dm_ru_container_build()
{
	var fields=new Array("dm_ru_url:dm_ru_url","dm_ru_name:dm_ru_name");
	for (var i=0;i<fields.length;i++){
		var el_id=dm_explode(":",fields[i])[0];
		var el_name=dm_explode(":",fields[i])[1];
		document.getElementById(el_id).setAttribute("name",el_name+"["+ dm_ru_num +"]");
	}
	dm_ru_num++;
}
function dm_ru_container_add(typeId,pref)
{
	if (dm_browser=='IE'){
		dm_ru_container_build();
		dm_container_add(typeId,pref);
	} else if (dm_browser=='Mozilla'){
		dm_container_add(typeId,pref);
		dm_ru_container_build();
	}	
}

