// JavaScript Document

//form validation and handling

var errors = false; 

function setCheckboxValue(obj){

	if(this.value=="on"){

		this.value = "off";

	}

	else{

		this.value="on";

	}

}
function showError(obj){

	errors = true;

	showBigError(true);

	var em = obj.parentNode.parentNode.getElementsByTagName("em");

	for(var i=0;i<em.length;i++){

		em[i].className = "red";

	}

	//obj.parentNode.firstChild.firstChild.className ="red";

}





function hideError(obj){

	var em = obj.parentNode.getElementsByTagName("em");

	for(var i=0;i<em.length;i++){

		if(i==0){

			em[i].className = "mainLabel";

		}

		else{

			em[i].className = "";	

		}

	}



	if(!errors){

		showBigError(false);	

	}



}



function showBigError(flag){

	errorDiv = document.getElementById("formError");

	if(flag==true){

		errorDiv.className = "red";

		errorDiv.innerHTML = "<p>Error - please check you have completed all required fields correctly.</p>";	

	}

	else if (flag==false){

		errorDiv.className= "hiddenError";

		errorDiv.innerHTML = "";

	}

}



function checkFormat(obj){

	emailP = new RegExp("^email");//"^(\\w\\W\\w+)"+text+"$"

	textP = new RegExp("^text");//"^(\\w\\W\\w+)"+text+"$"

	addressP = new RegExp("^address");//"^(\\w\\W\\w+)"+text+"$"

	uploadP =  new RegExp("^upload");

	dateP =  new RegExp("^date");
	
	passwordP =  new RegExp("^password");

	descriptionP = new RegExp("^description");

	var formatCheck = true;

	if(emailP.test(obj.className)){

		if(!isEmail(obj.value)){

			formatCheck=false;

		}			

	}

	else if(passwordP.test(obj.className)){

		if(!isEmpty(obj.value)){
				
			formatCheck="empty";

		}			

	}


	else if((textP.test(obj.className))||(addressP.test(obj.className))||(descriptionP.test(obj.className))){

		formatProblem ="empty";

	}

	else if(dateP.test(obj.className)){

		if(isEmpty(obj)){

			formatProblem="empty";

		}		

	}
	else if(passwordP.test(obj.className)){

		if(isEmpty(obj)){

			formatProblem="empty";

		}		

	}

	else if(uploadP.test(obj.className)){

		if((!isUploadAllowed(obj.value))&&(!isEmpty(obj))){

			formatCheck=false; 

		}

	}

	return formatCheck;

}

function isEmpty(obj){

	if(obj.value ==""){

		return true;	

	}

	//this is the yes radio button

	if((obj.className=="radio-r")&&(obj.value==0)){

		if((obj.checked==false)&&(obj.previousSibling.previousSibling.checked == false)){

			return true;		 

		}

	}

	return false;

}

function disableSubmitBtn(bool){

		//disable submit button

		var submitBtn = document.getElementById("contractFormSubmit");

		submitBtn.disabled = bool;	

}

function resetSubmitBtn(){

	disableSubmitBtn(false);

}




function isRequired(className){

	pattern = new RegExp(/-r$/);


	if(pattern.test(className)){

		return true;

	}

	else{

		return false;	

	}

}

function isEmail(text){

	var pattern = new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);

	if (pattern.test(text)){

		return true;

	}//end if

	return false;

}//end isEmail

function isUploadAllowed(text){

	var pattern = new RegExp("[^.]+?\\.((txt)|(rtf)|(pdf)|(doc)|(docx))");

	if (pattern.test(text)){

		return true;

	}//end if

	return false;

}

function addEventByObj(eventTypeMoz,eventTypeIE,parentObj,fnObj){



	

	}//end addMouseEventsByID

function getTarget(){

		var targ;

		if (!e) var e = window.event;

		if (e.target) targ = e.target;

		else if (e.srcElement) targ = e.srcElement;

		if (targ.nodeType == 3){// defeat Safari bug

			targ = targ.parentNode;

		}	

	}

function addLoadListener(fn){

    if(typeof window.addEventListener !='undefined')    window.addEventListener('load',fn,false);

    else if(typeof document.addEventListener !='undefined')    document.addEventListener('load',fn,false);

    else if(typeof window.attachEvent !='undefined')    window.attachEvent('onload',fn);

    else{

        var oldfn=window.onload;

        if(typeof window.onload !='function')    window.onload=fn;

        else    window.onload=function(){oldfn();fn();}

    }

}

function alerts(){

	window.alert("unloading");	

}


function changeColor(element,bool){

	if (bool){

		element.className = "submitButtonOver";	

	}

	else{

		element.className = "submitButton";

	}

}

//goToPage('company',1);

function doPage(type,id, action){

		window.location = "index.php?content="+action+"&type="+type+"&id="+id+"&action="+action;

}

//delete - are you sure?

function confirmDelete()
{
   if(confirm('You cannot undo this operation. Are you sure you want to delete this item? (Click \'OK\' to delete this item, or click \'Cancel\' to keep it.)'))
   {
		return true;
   }
   else
   {
	   return false;
   }
}



function validate(obj){

	if (isRequired(obj.className)){

			//all these are required fields so some content must be present

		if(isEmpty(obj)){

			//showError	

			return false;

		}

	}

	if(!checkFormat(obj)){

		return false;

	}

	else{

		return true;

		//return false;	

	}

}

function returnFalse(obj){
	//alert("message /OK");
	return false;
}
function checkForm(obj){
	//alert("message check /OK");

	var formObj = obj;//document.getElementById("form");
	var inputArray =formObj.getElementsByTagName('input');
	var taArray= formObj.getElementsByTagName('textarea');
	var elementArray = new Array();
	for(var i=0;i<taArray.length;i++){
		elementArray.push(taArray[i]);
	}
	for(var i=0;i<inputArray.length;i++){
		elementArray.push(inputArray[i]);
	}
	var errorDiv = document.getElementById('formError');
	var problem = false;
	for(var i=0; i<elementArray.length;i++){
		var obj = elementArray[i];
		//to ensure the submit button is not processed
		if((obj.value!="Submit")&&(obj.type!="hidden")){
			if(!validate(obj)){
				showError(obj);
				if(obj.className=="radio-r"){
					obj = obj.parentNode;	
				}
				problem = true;
			}
			else{
				hideError(obj);	
			}
		}
	}
	if(problem==false){
		disableSubmitBtn(true);
		showBigError(false);
		//alert("No Problem ");

		return true;
	}
	else{
		//alert("Problem ");

		return false;	
	}
}
function checkRegForm(formObj,isNew){
	//alert("message check /OK");

	var inputArray =formObj.getElementsByTagName('input');
	/*var taArray= formObj.getElementsByTagName('textarea');*/
	var elementArray = new Array();
	/*for(var i=0;i<taArray.length;i++){
		elementArray.push(taArray[i]);
	}*/
	for(var i=0;i<inputArray.length;i++){
		elementArray.push(inputArray[i]);
	}
	var errorDiv = document.getElementById('formError');
	var problem = false;
	for(var i=0; i<elementArray.length;i++){
		var obj = elementArray[i];
		//to ensure the submit button is not processed
		if(((obj.value!="Submit")||(obj.value!="Save")||(obj.value!="Upload"))&&(obj.type!="hidden")){
			if(!validate(obj)){
				
				if(obj.className=="password-r"){
					if(isNew){
						//check exists
						//check match
						showError(obj);	
						problem = true;


					}
					else{
						pwObj = getElementById("password");
						cpwObj = getElementById("confirmPassword");
						if((isEmpty(pwObj))&&(!isEmpty(cpwObj))||(!isEmpty(pwObj))&&(isEmpty(cpwObj))){
							problem = true;
							showError(pwObj);
							showError(cpwObj);
						}
						//check exists
						//if exists, check match, else do not update
					}
				}
				else{//not password
					showError(obj);	
					problem = true;

				}
			}
			else{
				hideError(obj);	
			}
		}
	}
	
	if(problem==false){
		disableSubmitBtn(true);
		showBigError(false);
		//alert("No Problem ");

		return true;
	}
	else{

		return false;	
	}
}
