function LTrim( value ) {	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");	
}

function RTrim( value ) {	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");	
}

function trim( value ) {	
	return LTrim(RTrim(value));	
}

function checkSpecFields(formId, fieldNames, emailFieldNames, numberFieldNames, errorString){		
	
	if(errorString==false){
		errorString = 'please fill in required fields';
	}
	
	if(fieldNames!=false){
		var fields = fieldNames.split(",");
		for(var i=0; i<fields.length; i++){
			var multFields = jQuery(formId).find('input[name='+fields[i]+']').length;		
			if(multFields>1){
				var error = 0;
				jQuery(formId).find('input[name='+fields[i]+']').each(function(i){
					var val = trim(jQuery(this).val());
					if(val.length<=0){						
						error++;
					}
																				});
				if(error>0){
					alert(errorString);
					return false;
				}
			}
			else{
				var val = trim(jQuery(formId).find('input[name='+fields[i]+']').val());
				if(val.length<=0){
					alert(errorString);
					return false;	
				}
			}
		}		
	}
	//emails
	if(emailFieldNames!=false){
		var e_fields = emailFieldNames.split(",");
		for(var i=0; i<e_fields.length; i++){
			var multFields = jQuery(formId).find('input[name='+e_fields[i]+']').length;
			if(multFields>1){
				var error = 0;
				jQuery(formId).find('input[name='+fields[i]+']').each(function(i){
					var val = trim(jQuery(this).val());
					if((val.length<=0)||(ifEmail(val)==false)){						
						error++;	
					}
																				});
				if(error>0){
					alert('invalid e-mail fields');
					return false;
				}
			}
			else{
				var val = trim(jQuery(formId).find('input[name='+e_fields[i]+']').val());
				if((val.length<=0)||(ifEmail(val)==false)){
					alert('invalid e-mail fields');
					return false;	
				}
			}
		}
	}
	
	if(numberFieldNames!=false){
		//numbers
		var n_fields = numberFieldNames.split(",");
		for(var i=0; i<n_fields.length; i++){
			var multFields = jQuery(formId).find('input[name='+n_fields[i]+']').length;
			if(multFields>1){
				var error = 0;
				jQuery(formId).find('input[name='+n_fields[i]+']').each(function(i){					
					var val = trim(jQuery(this).val());					
					if((val.length<=0)||(isNaN(val)==true)){						
						error++;	
					}
																				});
				if(error>0){
					alert('invalid number/amount');
					return false;
				}
			}
			else{
				var val = trim(jQuery(formId).find('input[name='+n_fields[i]+']').val());
				if((val.length<=0)||(isNaN(val)==true)){	
					alert('invalid number/amount');
					return false;	
				}
			}
		}
	}
	return true;
}


function checkAllFields(formId, inputTypes, textArea, emailFields, numberFields, passwordIds){
	var inTypeArr = inputTypes.split(",");
	var error = 0;
	for(var i=0; i<inTypeArr.length; i++){
		
		jQuery(formId).find('input:'+inTypeArr[i]).each(function(x){
			var val = trim(jQuery(this).val());
			if(val.length<=0){
				error++;
			}		
																 });
	}
	if(error>0){
		alert('fill in all field(s)');
		return false;	
	}
	if(emailFields!=false){
		var emailArr = emailFields.split(",");
		for(var i=0; i<emailArr.length; i++){
			var emailStr = trim(jQuery(formId).find('input[name='+emailArr[i]+']').val());
			if((ifEmail(emailStr)==false)||(emailStr.length==0)){
				alert('invalid e-mail(s)');
				return false;
			}
		}
	}
	if(numberFields!=false){
		var numberArr = numberFields.split(",");
		for(var i=0; i<numberArr.length; i++){
			var numStr = trim(jQuery(formId).find('input[name='+numberArr[i]+']').val());
			if((isNaN(numStr)==true)||(numStr.length==0)){
				alert('invalid number value(s)');
				return false;
			}
		}
	}	
	if(passwordIds!=false){
		var pwArr = passwordIds.split(",");
		var p1 = trim(jQuery(formId).find('#'+pwArr[0]).val());
		var p2 = trim(jQuery(formId).find('#'+pwArr[1]).val());
		if(((p1.length<=0)||(p2.length<=0))||(p1!=p2)){
			alert('passwords are empty or do not match');
			return false;
		}
	}
	if((textArea==true)&&(trim(jQuery(formId).find('textarea').val()).length<=0)){
		alert('fill in all field(s)');
		return false;
	}
	return true;
}

function ifEmail(str){
	var validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;	
	// search email text for regular exp matches
	if (str.search(validRegExp) == -1){		
		return false;
	} 
	return true; 
}

function stripslashes (str) {
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +      fixed by: Mick@el
    // +   improved by: marrtins    // +   bugfixed by: Onno Marsman
    // +   improved by: rezna
    // +   input by: Rick Waldron
    // +   reimplemented by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: stripslashes('Kevin\'s code');    // *     returns 1: "Kevin's code"
    // *     example 2: stripslashes('Kevin\\\'s code');
    // *     returns 2: "Kevin\'s code"
    return (str+'').replace(/\\(.?)/g, function (s, n1) {
        switch (n1) {            case '\\':
                return '\\';
            case '0':
                return '\0';
            case '':                return '';
            default:
                return n1;
        }
    });
}

function addslashes (str) {
    // Escapes single quote, double quotes and backslash characters in a string with backslashes  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/addslashes    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: marrtins
    // +   improved by: Nate
    // +   improved by: Onno Marsman    // +   input by: Denny Wardhana
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: addslashes("kevin's birthday");
    // *     returns 1: 'kevin\'s birthday'
     return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
}

function php_urlencode (str) {
	str = escape(str);
	return str.replace(/[*+\/@]|%20/g, function (s) {
		switch (s) {
			case "*": s = "%2A"; break;
			case "+": s = "%2B"; break;
			case "/": s = "%2F"; break;
			case "@": s = "%40"; break;
			case "%20": s = "+"; break;
		}
		return s;
	}
	);
}

$(document).ready(function(){
	$("form#send-form input:button").click(function(){
		if(checkAllFields('#send-form', 'text', 'inquiry', 'email', false, false)==true){
			$('#send-form').submit();
		}
													});
						   });
