// JavaScript Document

// Declaring valid date character, minimum year and maximum year
var dtCh= "-";
var minYear=1900;
var maxYear=2100;
function isInteger(s){
    var i;    
    for (i = 0; i < s.length; i++){           
    // Check that current character is number.        
    var c = s.charAt(i);       
     if (((c < "0") || (c > "9"))) 
        return false;    
     }    // All characters are numbers.   
    return true;
 }
 
 function stripCharsInBag(s, bag){
     var i;    
     var returnString = "";    
     // Search through string's characters one by one.    
     // If character is not in bag, append to returnString.    
     for (i = 0; i < s.length; i++){           
     var c = s.charAt(i);        
     if (bag.indexOf(c) == -1)
      returnString += c;    }    
     return returnString;
 }
 
 function daysInFebruary (year){
 // February has 29 days in any year evenly divisible by four,    
 // EXCEPT for centurial years which are not also divisible by 400.    
 return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
 }
 
 function DaysArray(n) {
 for (var i = 1; i <= n; i++) {
 this[i] = 31;
 if (i==4 || i==6 || i==9 || i==11) 
 {this[i] = 30;}
 if (i==2) {this[i] = 29;}   
 }    
 return this;}
 
 
 function isDateValidation(dtStr)
 {
    if (!(/^\d\d\d\d-\d\d-\d\d$/).test(dtStr)) return false;

    var parts = dtStr.split("-");

    var year = parseInt(parts[0], 10);
    var month = parseInt(parts[1], 10) - 1;
    var day = parseInt(parts[2], 10);
    
    var date = new Date(year, month, day);

    return date.getFullYear() == year
        && date.getMonth() == month
        && date.getDate() == day;    
 /*
     var daysInMonth = DaysArray(12);
     var pos1=dtStr.indexOf(dtCh);
     var pos2=dtStr.indexOf(dtCh,pos1+1);
     var strYear = dtStr.substring(0,pos1);
     var strMonth = dtStr.substring(pos1+1,pos2);
     var strDay = dtStr.substring(pos2+1);
     //var strMonth=dtStr.substring(0,pos1);
     //var strDay=dtStr.substring(pos1+1,pos2);
     //var strYear=dtStr.substring(pos2+1)
     strYr=strYear;
     if(strDay.charAt(0)=="0" && strDay.length>1)
        strDay=strDay.substring(1);
     if (strMonth.charAt(0)=="0" && strMonth.length>1) 
        strMonth=strMonth.substring(1);
     for (var i = 1; i <= 3; i++) 
     {
        if (strYr.charAt(0)=="0" && strYr.length>1) 
            strYr=strYr.substring(1);
     }
     
     month=parseInt(strMonth);
     day=parseInt(strDay);
     year=parseInt(strYr);
     if (pos1==-1 || pos2==-1)
        {return false;}
     if (strMonth.length<1 || month<1 || month>12)
     //{alert("Please enter a valid month");return false;}
        {return false;}
     if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
     //{alert("Please enter a valid day");return false;}
        {return false;}
     if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
     //{alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear);return false;}
        {return false;}
     if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
     //{alert("Please enter a valid date");return false;}
        {return false;}
     return true;
     */
 }
 
 
 
function isValueDouble(s)
{
	  var i;
//	  var mask =/^[0-9]+([\.\,][0-9]+)?$/;

      var mask =/^[0-9]+([\.][0-9]+)*([\,][0-9]+)?$/;
      var mask1 =/^[0-9]+([\,][0-9]+)*([\.][0-9]+)?$/;

      return mask.test(s) || mask1.test(s);
}


function ValidateForm(){
var dt=document.frmSample.txtDate;
if (isDateValidation(dt.value)==false){dt.focus(); return false;}    
return true; 
}

function validateOnSubmit_reservationsModule(form, doc) {

    var el;
    var itensChecked=0;
    var returnValue = true;
    var returnValue2;
    for(i=0;i<form.elements.length;i++)
    {
		var tmp = form.elements[i];
		if(tmp.id == "hotelIdReserv"){
		    el = tmp;
		    
		    if(el.value != "0")
	        {
	            itensChecked++;
	        }
		}
	}
	
	if(itensChecked == 0)
	{
	   var obj1 = document.getElementById("hotelIdReserv");
	   var error_element = doc.getElementById("hotelIdReservDiv");
	   var pos = findPosition(obj1);
       
       error_element.style.left=(pos[0]+ 6)+"px";
       error_element.style.top=(pos[1]+4)+"px";
	  
	   //error_element.style.left =  -10+"px";
	   error_element.style.display="block";
	   returnValue = false;
	}
	returnValue2 = validateOnSubmit(form, doc);
	if(!returnValue)
	    return returnValue;
	else 
	    return returnValue2;
}

function validate_field_contents(form, doc){
    var flagDiv = 0;
    var el_aux;
	var elem;
    var errs=0;
	var map_1 = new Array();
	var map_2 = new Array();
	var group_id;
	for(i=0;i<form.elements.length;i++){
		input_invalid = false;
		element = form.elements[i];

        if (element.type == null) continue;
		
		if(element.type.search(/hidden/i) != -1){
			g_index = element.id.search(/group_/i);
			if(g_index != -1){
			
				group_name = element.id.substring(g_index, element.id.length);
				element_id = doc.getElementById(element.value);
				group_id = element_id;
				map_1.push(element.id);
				if(!is_empty(element_id.value)){
					map_2.push(element.id);
				}

			}
		}
		else{
			id = element.id;
			index_validation_type = doc.getElementById(id+""+"_validation_type");
			index_required = doc.getElementById(id+""+"_required");
			var tmp = doc.getElementById("inicialText"+id);
			var processValidationType = true;
			if(tmp != null && index_required!=null)
			{
			    if(tmp == element.value)
			        processValidationType = false;
			}
			else if(index_required!=null && is_empty(element.value))
			{
			    processValidationType = false;
			}
			
			if(index_validation_type != null && element.value.length>0){
				if(index_validation_type.value.search(/email/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_email(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
						    showDivFormError (element.id, error_element.id);
						    flagDiv = 1;
						    el_aux = element.id;
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				
				else if(index_validation_type.value.search(/cc/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!cardval(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/integer/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isInteger(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/date/i) != -1 ){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isDateValidation(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/textDouble/i) != -1){
				    
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isValueDouble(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/phone/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					
					if (document.getElementById && document.getElementById("inicialText"+id)!= null && !is_empty(element.value))
					{
					    var tmp = doc.getElementById("inicialText"+id);
					    if(element.value == tmp.value)
					    {
					        element.value = "";
					    }
					}
					
					if(!is_valid_phone(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				else if(index_validation_type.value.search(/vat/i) != -1 && index_required!=null && element.value.lenght>0){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_vat(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
			}
		   if(index_required != null && (flagDiv == 0 || (flagDiv==1 &&  el_aux != element.id ))){
				if(index_required.value.search(/true/i) != -1){
					error_element = doc.getElementById("required_"+id);
					
					if (document.getElementById && document.getElementById("inicialText"+id)!= null && !is_empty(element.value))
					{
					    var tmp = doc.getElementById("inicialText"+id);
					    if(element.value == tmp.value)
					    {
					        input_invalid=true;
						    errs++;
						    if(error_element != null){
					            showDivFormError (element.id, error_element.id);
							    errs++;
						    }
						}
					}
					
					else if(is_empty(element.value) ){
   						element.focus();
						input_invalid=true;
						errs++;
						if(error_element != null){
						    setTimeout((function(e, ee) { return function(){ showDivFormError(e, ee); }})(element.id, error_element.id), 0);
							errs++;
						}
					
					}
					else{
						error_element.style.display="none";
					}	
				}
			}
			
			
		}
	}

	for(j=0;j<map_1.length;j++){
		is_group_fulfill = false;
		for(k=0;k<map_2.length;k++){
			if(map_1[j]==map_2[k]){
				is_group_fulfill=true;
				break;
			}
		}
		if(is_group_fulfill){
			doc.getElementById("div_" + map_1[j]).style.display="none";
		}
		else{
			errs++;
			 
			 var obj1 = document.getElementById(element_id.id);
			 var pos = findPosition(obj1);
             showDivFormError (element_id.id, "div_" + map_1[j]);
//              doc.getElementById("div_" + map_1[j]).style.left=(pos[0]+8)+"px";
//               doc.getElementById("div_" + map_1[j]).style.top=(pos[1]-15)+"px";
//			 doc.getElementById("div_" + map_1[j]).style.display="block";
		}
	}
	
	
	return errs;
}

function validate_field_contents_vinhos(form, doc){
    var flagDiv = 0;
    var el_aux;
	var elem;
    var errs=0;
	var map_1 = new Array();
	var map_2 = new Array();
	var group_id;
	for(i=0;i<form.elements.length;i++){
		input_invalid = false;
		element = form.elements[i];

        if (element.type == null) continue;
		
		if(element.type.search(/hidden/i) != -1){
			g_index = element.id.search(/group_/i);
			if(g_index != -1){
			
				group_name = element.id.substring(g_index, element.id.length);
				element_id = doc.getElementById(element.value);
				group_id = element_id;
				map_1.push(element.id);
				if(!is_empty(element_id.value)){
					map_2.push(element.id);
				}

			}
		}
		else{
			id = element.id;
			index_validation_type = doc.getElementById(id+""+"_validation_type");
			index_required = doc.getElementById(id+""+"_required");
			var tmp = doc.getElementById("inicialText"+id);
			var processValidationType = true;
			if(tmp != null && index_required!=null)
			{
			    if(tmp == element.value)
			        processValidationType = false;
			}
			else if(index_required!=null && is_empty(element.value))
			{
			    processValidationType = false;
			}
			
			if(index_validation_type != null && element.value.length>0){
				if(index_validation_type.value.search(/email/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_email(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
						    showDivFormError (element.id, error_element.id);
						    flagDiv = 1;
						    el_aux = element.id;
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				
				else if(index_validation_type.value.search(/cc/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!cardval(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/integer/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isInteger(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/date/i) != -1 ){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isDateValidation(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/textDouble/i) != -1){
				    
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isValueDouble(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/phone/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					
					if (document.getElementById && document.getElementById("inicialText"+id)!= null && !is_empty(element.value))
					{
					    var tmp = doc.getElementById("inicialText"+id);
					    if(element.value == tmp.value)
					    {
					        element.value = "";
					    }
					}
					
					if(!is_valid_phone(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				else if(index_validation_type.value.search(/vat/i) != -1 && index_required!=null && element.value.lenght>0){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_vat(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
			}
		   if(index_required != null && (flagDiv == 0 || (flagDiv==1 &&  el_aux != element.id ))){
				if(index_required.value.search(/true/i) != -1){
					error_element = doc.getElementById("required_"+id);
					
					if (document.getElementById && document.getElementById("inicialText"+id)!= null && !is_empty(element.value))
					{
					    var tmp = doc.getElementById("inicialText"+id);
					    if(element.value == tmp.value)
					    {
					        input_invalid=true;
						    errs++;
						    if(error_element != null){
					            showDivFormError (element.id, error_element.id);
							    errs++;
						    }
						}
					}
					
					else if(is_empty(element.value) ){
   						element.focus();
						input_invalid=true;
						errs++;
						if(error_element != null){
						    setTimeout((function(e, ee) { return function(){ showDivFormError(e, ee); }})(element.id, error_element.id), 0);
							errs++;
						}
					
					}
					else{
						error_element.style.display="none";
					}	
				}
			}
			
			
		}
	}

	/*for(j=0;j<map_1.length;j++){
		is_group_fulfill = false;
		for(k=0;k<map_2.length;k++){
			if(map_1[j]==map_2[k]){
				is_group_fulfill=true;
				break;
			}
		}
		if(is_group_fulfill){
			doc.getElementById("div_" + map_1[j]).style.display="none";
		}
		else{
			errs++;
			 
			 var obj1 = document.getElementById(element_id.id);
			 var pos = findPosition(obj1);
             showDivFormError (element_id.id, "div_" + map_1[j]);
//              doc.getElementById("div_" + map_1[j]).style.left=(pos[0]+8)+"px";
//               doc.getElementById("div_" + map_1[j]).style.top=(pos[1]-15)+"px";
//			 doc.getElementById("div_" + map_1[j]).style.display="block";
		}
	}*/
	
	
	return errs;
}

function validate_field_contents2(form, doc){
    var flagDiv = 0;
    var el_aux;
	var elem;
    var errs=0;
	var map_1 = new Array();
	var map_2 = new Array();
	var group_id;
	for(i=0;i<form.elements.length;i++){
		input_invalid = false;
		element = form.elements[i];

        if (element.type == null) continue;
		
		if(element.type.search(/hidden/i) != -1){
			g_index = element.id.search(/group_/i);
			if(g_index != -1){
			
				group_name = element.id.substring(g_index, element.id.length);
				element_id = doc.getElementById(element.value);
				group_id = element_id;
				map_1.push(element.id);
				if(!is_empty(element_id.value)){
					map_2.push(element.id);
				}

			}
		}
		else{
			id = element.id;
			index_validation_type = doc.getElementById(id+""+"_validation_type");
			index_required = doc.getElementById(id+""+"_required");
			var tmp = doc.getElementById("inicialText"+id);
			var processValidationType = true;
			if(tmp != null && index_required!=null)
			{
			    if(tmp == element.value)
			        processValidationType = false;
			}
			else if(index_required!=null && is_empty(element.value))
			{
			    processValidationType = false;
			}
			
			if(index_validation_type != null && element.value.length>0){
				if(index_validation_type.value.search(/email/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_email(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
						    showDivFormError (element.id, error_element.id);
						    flagDiv = 1;
						    el_aux = element.id;
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				
				else if(index_validation_type.value.search(/cc/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!cardval(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/integer/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isInteger(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/date/i) != -1 ){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isDateValidation(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/textDouble/i) != -1){
				    
					error_element = doc.getElementById("invalid_value_"+id);
					if(!isValueDouble(element.value)){
						input_invalid=true;
						errs++;
						
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				
				else if(index_validation_type.value.search(/phone/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					
					if (document.getElementById && document.getElementById("inicialText"+id)!= null && !is_empty(element.value))
					{
					    var tmp = doc.getElementById("inicialText"+id);
					    if(element.value == tmp.value)
					    {
					        element.value = "";
					    }
					}
					
					if(!is_valid_phone(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				else if(index_validation_type.value.search(/vat/i) != -1 && index_required!=null && element.value.lenght>0){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_vat(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
						    flagDiv = 1;
						    el_aux = element.id;
						    showDivFormError (element.id, error_element.id);
							//error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
			}
		   if(index_required != null && (flagDiv == 0 || (flagDiv==1 &&  el_aux != element.id ))){
				if(index_required.value.search(/true/i) != -1){
					error_element = doc.getElementById("required_"+id);
					
					if (document.getElementById && document.getElementById("inicialText"+id)!= null && !is_empty(element.value))
					{
					    var tmp = doc.getElementById("inicialText"+id);
					    if(element.value == tmp.value)
					    {
					        input_invalid=true;
						    errs++;
						    if(error_element != null){
					            showDivFormError (element.id, error_element.id);
							    errs++;
						    }
						}
					}
					
					else if(is_empty(element.value) ){
   						element.focus();
						input_invalid=true;
						errs++;
						if(error_element != null){
						    setTimeout((function(e, ee) { return function(){ showDivFormError(e, ee); }})(element.id, error_element.id), 0);
							errs++;
						}
					
					}
					else{
						error_element.style.display="none";
					}	
				}
			}
			
			
		}
	}
	return errs;
}

function hideErrorDiv(div) 
{    
	if (document.getElementById && document.getElementById(div)!= null)
	{
	    
		var style2 = document.getElementById(div).style.display = "none";
//		if(style2.display == "block")
//		{
		    
//		    style2.display = "none";
//		}	
	}
}

function showDivFormError(obj, div) {              
    obj = document.getElementById(obj);
  
    //alert(obj);
//    if (document.getElementById && document.getElementById(div)!= null)
//	{   
		var style2 = document.getElementById(div).style;
		var leftMargin = 550;
		var topMargin = 3;
		style2.display = "block";	
		
		menuPos =  findPosition (obj); // (mouseX(event) - leftMargin);
		//style2.left = (menuPos[2] + leftMargin) + "px";
		//style2.top = (menuPos[1] + topMargin) + "px";
//		alert(menuPos);
//		alert(style2.left);
//		alert(style2.top);
//	}
}

function findPosition(obj) {
	var posleft = postop = posleftAbs = 0;
	if (obj.offsetParent)
	{
		posleft = obj.offsetLeft
		postop = obj.offsetTop
		posleftAbs = obj.offsetLeft
		while (obj = obj.offsetParent)
		{
			posleft += obj.offsetLeft
			postop += obj.offsetTop
		}
	}
	return [posleft,postop,posleftAbs];
}


function validateOnSubmit_domainOrderInit(form, doc) {

    var el;
    var itensChecked=0;
    
    for(i=0;i<form.elements.length;i++){
		var tmp = form.elements[i];
		if(tmp.id == "cat"){
		    el = tmp;
		    
		    if(el.checked == true)
	        {
	            itensChecked++;
	        }
		}
	}
	
	if(itensChecked == 0)
	{
	    return false;
	}
	else
	    return validateOnSubmit(form, doc);
}

function validateOnSubmit_resgisterUser(form, doc) {
	return validateOnSubmit(form, doc);
}
// Only script specific to this form goes here.
// General-purpose routines are in a separate file.
function validateOnSubmit(form, doc) {
	var errors=0;
	errors+=validate_field_contents(form, doc);
	//errors+=check_required(form, doc);
	//if (errors>1)  alert('There are fields which need correction before sending');
	//if (errors==1) alert('There is a field which needs correction before sending');
	return (errors==0);
}

function validateOnSubmit2(form, doc) {
	var errors=0;
	errors+=validate_field_contents2(form, doc);
	//errors+=check_required(form, doc);
	//if (errors>1)  alert('There are fields which need correction before sending');
	//if (errors==1) alert('There is a field which needs correction before sending');
	return (errors==0);
}

function validateOnSubmit_vinhos(form, doc) {
	var errors=0;
	errors+=validate_field_contents_vinhos(form, doc);
	//errors+=check_required(form, doc);
	//if (errors>1)  alert('There are fields which need correction before sending');
	//if (errors==1) alert('There is a field which needs correction before sending');
	return (errors==0);
}

function validateOnSubmitVitaldent(value) {
	var errors=0;
	if(value == "")
	{
	    errors++;
	}
	//errors+=check_required(form, doc);
	//if (errors>1)  alert('There are fields which need correction before sending');
	//if (errors==1) alert('There is a field which needs correction before sending');
	alert('etc e tal');
	return (errors==0);
}

function is_empty(value){
	if(value=="")
		return true;
	return false;
}

function is_valid_email(email){
	
	if(email=="")
		return false;
	
	var tfld = trim(email);  // value of field with whitespace trimmed off
  var emailx = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  if (!emailx.test(tfld)) {
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!email2.test(tfld)){ 
    //alert("mail aparentement invalido");
  }
  else{
    
  }
  return true;
	
}

function cardval(s) {
    // remove non-numerics
    var v = "0123456789";
    var w = "";
    for (i=0; i < s.length; i++) {
    x = s.charAt(i);
    if (v.indexOf(x,0) != -1)
    w += x;
    }
    // validate number
    j = w.length / 2;
    if (j < 6.5 || j > 8 || j == 7) return false;
    k = Math.floor(j);
    m = Math.ceil(j) - k;
    c = 0;
    for (i=0; i<k; i++) {
    a = w.charAt(i*2+m) * 2;
    c += a > 9 ? Math.floor(a/10 + a%10) : a;
    }
    for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
    return (c%10 == 0);
}


function is_valid_phone(phone){
	if(phone=="")
		return true;//TODO optional
	var value = trim(phone);
	var phone_mask = /^\+?[0-9]+[0-9]+$/;
	if(!phone_mask.test(value)){
		//alert(value);
		return false;
	}
	var phone_number_length = value.length;
	if(phone_number_length < 9){
	//alert("length " + phone_number_length);
		return false;
	}
	return true;
}

function is_valid_vat (vatnumber) {
  var total = 0;
  var multipliers = [9,8,7,6,5,4,3,2];
  var vatexp = /^(\d{9})$/;
  
  if(vatnumber == '123456789' || !vatexp.test(vatnumber))
		return false;
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++)
    total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits subtracting modulus 11 from 11.
  total = 11 - total % 11;
  if (total > 9){
    total = 0;
  }
  
  // Compare it with the last character of the VAT number.
  // If it is the same, then it's a valid check digit.
  if (total == vatnumber.slice (8,9)) 
    return true
  else 
    return false;
}

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '')
};



