function addLoadEvent(func) {
var oldonload = window.onload;
        if (typeof window.onload != 'function') {
                window.onload = func;
        } else {
                window.onload = function() {
                        if (oldonload) {
                                oldonload();
                        }
                func();
                }
        }
}


var d=document;
var debug=0;
var errors=false;
var frmSub;
var returnCode;
    
function fieldValidate(fObj,frmSub) {
    errTest=-1;
    switch(fObj.id) {
        case "contact":
                valid=_minLength(fObj.value,1);
                if(errTest = (valid)?4:0) break;
                valid=_maxLength(fObj.value,15);
                if(errTest = (valid)?3:0) break;
                valid=_isInt(fObj.value);
                if(errTest = (valid)?1:0) break;
                valid=_isSpecialChars(fObj.value);
                if(errTest = (!valid)?5:0) break;
		break;
	case "bride_name":
	case "groom_name":
		valid=_minLength(fObj.value,1);
                if(errTest = (valid)?4:0) break;
                valid=_maxLength(fObj.value,15);
                if(errTest = (valid)?3:0) break;
                valid=_isInt(fObj.value);
                if(errTest = (valid)?1:0) break;
                valid=_isSpecialChars(fObj.value);
                if(errTest = (!valid)?5:0) break;
                break;
	case "email":
                valid=_isEmail(fObj.value);
                if(errTest = (!valid)?1:0) break;
		break;
       case "phone":
                valid = _editPhone(fObj.value);
                if(errTest = (!valid)?4:0) break;
		break;
	default:
		break;
    }
    if(errTest!=-1) returnCode = errMessage(fObj,errTest);
}

function _hasSingleCharacterDiff(string1,string2) {
	string1 = string1.toLowerCase();
	string2 = string2.toLowerCase();
	for(_i=0;_i<string2.length;_i++) {
		if(string1.indexOf(string2.charAt(_i))==-1) return true;
	}
	return false;
}

function _checkDate(mm,yy,nDate) {
	mDate = new Date(yy, mm, 31, 00);
	if(mDate<nDate) return 0;
	return 1;
}

function _compareStrings(str1,str2) {
	if(str1 == str2) return 1;
	return 0;
}

function _indexIsAlpha(index,str) {
	return _isAlpha(str.charAt(index));
}

function _charAtIsArg(str,chr,index) {
	if(str.charAt(index) == chr) return true;
	return false;
}

function _compareArgToCharAt(str,chr,index,compOp) {
	if(eval("str.charAt(index)" + compOp + "chr")) return 1;
	return 0;
}

function _compareSubStrings(str1,str2,sublen) {
	if(str1.substring(0,sublen) == str2.substring(0,sublen)) return 1;
	return 0;
}

function _isAlpha(str) {
	if(str.search(/([0-9])/g) == -1) return 1;
	return 0;
}

function _isInt(str) {
	if(str.search(/[^0-9]/g)>-1)return 0;
	return 1;
}

function _subStringMatch(str,start,length,substr) {
	if(str.substring(start,length) == substr) return 1;
	return 0;
}

function _minLength(str,length) {
	if(str.length<length)return 1;
	return 0;
}

function _maxLength(str,length) {
	if(str.length>length)return true;
	return 0;
}

function _isEmail(str) {
	//if (str == "") return true;
	var pattern =/.+@.+\..+/;
	if (str.match(pattern)) {
		return 1;
	} else {
		return 0;
	}
}

function _isSpecialChars(str) {
	if(str.search(/[^ .a-zA-Z\d]/) == -1) return 1;
	return 0;
}

function _editPhone(e) { 
	var CleanedString="";
	var index = 0;
	var LimitCheck;
	var InitialString = e
	LimitCheck = InitialString.length;

	while (index != LimitCheck) {
		if (isNaN(parseInt(InitialString.charAt(index)))) {
		
		}
		else {
			CleanedString = CleanedString + InitialString.charAt(index);
		}
		index = index + 1;
	}

	if (CleanedString.length == 10) {
		e = "(" + CleanedString.substring(0,3) + ") " + CleanedString.substring(3,6) + "-" + CleanedString.substring(6,10);
		return true;
	} else {
		CleanedString = InitialString;
		return false;
	}
}

function _trimString(str) {
	return str.replace(/ /g,"");
}

function errMessage(inpObj,rule) {
var errMess="";

    try {
        if((!err[inpObj.id] || !err[inpObj.id][rule]) && (rule!=0 && rule!=null)) { 
            alert("There is a problem with your information. Please double check what you have entered.\n\nError " + rule + " [ " + inpObj.id + " ]");
        } else {
            if(rule) { errMess = err[inpObj.id][rule]; }
            if(rule==0) {
                pimg="images/field_check.gif";
                palt="";
            } else {
                pimg="images/field_x.gif";
                palt="Ooops!";
            }
                
            if(inpObj.nextSibling.tagName == 'IMG') {inpObj.parentNode.removeChild(inpObj.nextSibling);}
            
                try {
                    doneImg = d.createElement('<img class="doneField" src="'+pimg+'" alt="'+palt+'" title="'+palt+'" width="18" height="18" />');
                } catch (e) {
                    doneImg = d.createElement("img");
                    doneImg.setAttribute('src', pimg);
                    doneImg.setAttribute('class', 'doneField');
                    doneImg.setAttribute('alt', palt);
                    doneImg.setAttribute('title', palt);
                    doneImg.setAttribute('width', '18');
                    doneImg.setAttribute('height', '18');
                }
                
                doneImgElem = inpObj.parentNode.insertBefore(doneImg, inpObj.nextSibling);
                if(doneImgElem.nextSibling.tagName == 'SPAN')
                doneImgElem.parentNode.removeChild(doneImgElem.nextSibling);
                errors=false;
                
                if(rule) {
                    try {
                        doneText=d.createTextNode(errMess);
                        doneSpan = d.createElement('<span class="doneText"></span>');
                    } catch (e) {
                        doneText=d.createTextNode(errMess);
                        doneSpan = d.createElement("span");
                        doneSpan.setAttribute('class', 'doneText');
                    }
                    doneSpan.appendChild(doneText);
                    doneTextNode = doneImgElem.parentNode.insertBefore(doneSpan, doneImgElem.nextSibling);
                    errors=true;
                }
        }

    } catch (error) { 
        if(debug)alert('error: '+error.message); 
    }
	return errors;
}

function validateFields() {
frmElm = d.forms[0].elements;
pageHeader=d.getElementById('contactus');
    
	for(i=0;i<frmElm.length;i++) {
	if((frmElm[i].tagName == "INPUT" || frmElm[i].tagName == "SELECT") && frmElm[i].type!="hidden") {
		fieldValidate(frmElm[i],1);
		if(returnCode) {
			window.scrollTo(0,0);
			//if(pageHeader.nextSibling.tagName == 'SPAN') return false;
			try {
				pageErrMessage = d.createElement('<span class="error"></span>');
			} catch (e) {
				pageErrMessage=d.createElement('span');
				pageErrMessage.setAttribute('class', 'error');
			}

		pageErrMessageH3 = d.createElement("h3");
		pageErrMessageH3.appendChild(d.createTextNode(''));
        
		pageErrMessageP = d.createElement('p');
		pageErrMessageP.appendChild(d.createTextNode(''));
		pageErrMessageP.appendChild(document.createElement("br"));
		pageErrMessageP.appendChild(d.createTextNode(''));
                
		pageErrMessage.appendChild(pageErrMessageH3);
		pageErrMessage.appendChild(pageErrMessageP);

		writePageError = pageHeader.parentNode.insertBefore(pageErrMessage, pageHeader.nextSibling);

		// test returned TRUE, so dont submit
		return false;
		}
	}
	}

	//alert('submitted: ' + returnCode);
	// test returned FALSE, so submit form
	return true;
}

function setupFields() {
	frmElm = d.forms[0].elements;
	for(i=0;i<frmElm.length;i++) {
		if((frmElm[i].tagName == "INPUT" || frmElm[i].tagName == "SELECT") && frmElm[i].type!="hidden") {
			frmElm[i].onblur = function() { fieldValidate(this);}
		}
	}
}

addLoadEvent(setupFields);
