// JavaScript Document
/*
	autor:	robert `smoŽ schmoller
	date:	2006-08-08
	
	description:
	
*/


function xFormValidation ( $formname, $elements, $valid_email, $event )
{
  
  var xfrm = document[ $formname ];
  var xelem = xfrm.elements;
  //alert('xfrm: ' + xfrm +'\nxelem: ' + xelem );
  var xrequireds = new Array();
  //
  var el = ''
  var check_elem = $elements.split(";");
  for( var i in check_elem ){
	//
	var xname = check_elem[i];
	var xitem = xelem[ xname ];
	//alert('xitem: ' + xitem + ' name: ' + xitem.name + ' type: ' + xitem.type + ' typeof: ' + typeof xitem   );
	if( typeof xitem == "object" && xitem.type == undefined && xitem.name == undefined ){
		//
		var nel = ''
		var is_checked = false;
		var len = xitem.length;
		for( var n=0; n<len; n++ ){
			//
			//alert('n: ' + n + ' typeof: ' + typeof xitem + ' xitem: ' + xitem[n]);
			var n_xitem = xitem[n];
			if( typeof n_xitem == "object" ){
				if( n_xitem.checked ){
					is_checked = true;
					break;
				}
			}
			nel += 'typeof: ' + typeof n_xitem + ' checked: ' + n_xitem.checked + "\n";
			// nel += 'typeof: ' + typeof n_xitem + ' name: ' + n_xitem.name + ' type: ' + n_xitem.type + ' checked: ' + n_xitem.checked + "\n";
		}
		if( !is_checked ){ xrequireds.push(xname); }
		//alert(nel);
	} else if( xitem.type == 'checkbox' ){
		//
		if( !xitem.checked ){ xrequireds.push( xname ); }
		
    } else {
		//
                if (xitem.name == $valid_email)
                {
                  isvalidemail = xEmailValidation(xitem.value);
                  if (isvalidemail == 0)
                  {
                    xrequireds.push(xname);
                  }
                } else {
                  if( xitem.value == "" ){ xrequireds.push(xname); }
                }
	}
	
	el += 'i: ' + i + 'typeof: ' + typeof xitem +' element: ' + xelem[ check_elem[i] ] + ' type: ' + xelem[ check_elem[i] ].type + ' id: ' + xelem[ check_elem[i] ].id + ' name: ' + xelem[ check_elem[i] ].name + '\n'
  }
  //
  //alert('elements: ' + el );
  //
  if( xrequireds.length > 0 ){
	//
	if( $event == undefined || $event == null ){
		//
		alert("please complete the form by fill in required data!");
	} else {
		//
		$event( xrequireds );
	}
  } else {
	//
	xfrm.submit();
  }

 
}

function xEmailValidation ( email )
{
  is_valid = 0
  if (email.length>5 && email.indexOf('@')>0 && email.indexOf('.')>0)
  {
    email_data = email.split('@')
    if (email_data[0].length>0 && email_data[1].length>3 && email_data[1].indexOf('.')>0)
    {
        is_valid = 1
    }
  }
  return is_valid
}

function xFormShowRequireds ( $array )
{
  alert('xFormShowRequireds: ' + $array );
}
