// ----------------------------------
// Javascript for ontariobride.com
// Author: Jeffrey Maltez
// ----------------------------------

// ----------------------------------
//		setFocus(obj)
// Requires object to be passed and
// focus and select methods are
// called for object
// ----------------------------------
function setFocus(obj){
	obj.focus();
	obj.select();
}

// ----------------------------------
//		submitForm()
// Requires form object to be passed
// Form fields are validated
// Returns true if fields are valid
// ----------------------------------
function submitForm(objForm){
	var errMsg = ''
	var radioSelected = false
	var inputFields = objForm.getElementsByTagName('input');
	var textareaFields = objForm.getElementsByTagName('TEXTAREA');	

    if(objForm.id == 'Search'){
        if(objForm.oCity.value == ''){
            alert('Please select a city to search');
            return false;
        }else{
            return true;
        }
    }else{
    	// Validate input fields
		if (inputFields){
			for(var i=0;i<inputFields.length;i++){
				if (!fieldCompleted(inputFields[i])){
					errMsg += inputFields[i].name + ' is required\n';
				} else {
					switch(inputFields[i].name){
						case 'E-mail':
							errMsg += validateEmail(inputFields[i]);
							break
						case 'Telephone':
						    if (inputFields[i].value){
							    errMsg += validateTelephone(inputFields[i]);
							}
							break
						case 'Action':
						    if(inputFields[i].checked){
						        radioSelected = true;
						    }
						default:
					}
				}
			}
			if (objForm.id == 'Classified' && radioSelected == false){
			        errMsg += 'Buy or sell is required\n';
			}
		}
		// Validate text area
		if (textareaFields){
		    for (var i=0;i<textareaFields.length;i++){
		        if(textareaFields[i].value == textareaFields[i].defaultValue){
		            errMsg += textareaFields[i].name + ' is required\n';
		        }
		    }
		}
		
		// Return results and display message
		if (errMsg == ''){
			return true;
		} else {
			alert(errMsg);
			return false;
		}
	}
}

// --------------------------------------------
//            fieldCompleted
// Validates if a field was completed
// Excludes telephone number field
// Return true if completed
// --------------------------------------------

function fieldCompleted(field){
    if(!field.value){
        if (field.name == 'Telephone'){
            return true;
        } else {
            return false;
        }
    }else{
        return true;
    }
}

// --------------------------------------------
//            validateEmail
// Validate e-mail
// --------------------------------------------

function validateEmail( obj ) {
    var emailStr = obj.value;
    var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
    var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid

    if ( !reg1.test( emailStr ) && reg2.test( emailStr ) ) {
        return '';
    } else {
        return 'A valid e-mail is required\n';
    }
}

// --------------------------------------------
//            validateTelephone
// Validate telephone number
// --------------------------------------------

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++){ 
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function validateTelephone(obj){
    // Declaring required variables
    var digits = "0123456789";

    // non-digit characters which are allowed in phone numbers
    var phoneNumberDelimiters = "()- ";

    // characters which are allowed in international phone numbers
    // (a leading + is OK)
    var validWorldPhoneChars = phoneNumberDelimiters + "+";

    // Minimum no of digits in an international phone no.
    var minDigitsInIPhoneNumber = 10;
    
    var strPhone = obj.value;
    s=stripCharsInBag(strPhone,validWorldPhoneChars);
    if (isInteger(s) && s.length == minDigitsInIPhoneNumber){
        //Valid telephone
        return '';
    } else {
        return 'A valid telephone number is required\n';
    }
}
    
// -----------------------------------------
//          bannerClick
// Opens url for banner images
// ----------------------------------------- 
function bannerClick(url){
	window.open(url);
}
