//*********************************************
//FILE: c2js.js
//AUTHOR: Ron Ifferte (rifferte@poweronemedia.com)
//COPYRIGHT: PowerOne Media, 2002
//*********************************************

// ** All Category Search Keyword Validation **********
// ** should be used in the Form named allcatsearch 
//    and when keyword element named as se.category.kq ****
function validateAllCatOnlySearch(displayName) {
    if (document.allcatsearch.elements["se.category.kq"].value == "") {
       alert("Keyword required for " + displayName + ", please enter a Keyword and try again");
       return false;
    } else {
       return true;
    }
}

//*********UserName*********
function validateUserName(value) {
    var regUserName = /^[a-zA-Z0-9][\w|-]*$/;
    if (regUserName.test(value)) {   
        return true;
    } else {
        return false;
    }
}

function blurUserName(value) {
    var isblurUserNameOK = validateUserName(value);    
    if (!isblurUserNameOK) {
	alert("The username must begin with a number or letter, followed by letters, numbers, dashes and/or underscores only."); 
    }
}

//*********LooseUserName*********
//added to help data migration between products
function validateLooseUserName(value) {
	if (value.replace(/\s/g, "") != "") {
		return true;
	} else {
		return false;
	}    
}

function blurLooseUserName(value) {
    var isblurLooseUserNameOK = validateLooseUserName(value);    
    if (!isblurLooseUserNameOK) {
	alert("You need to specify a name."); 
    }
}

function blurLooseContactName(value) {
    var isblurLooseContactNameOK = validateLooseUserName(value);
    if (!isblurLooseContactNameOK) {
	alert("You need to specify a contact name."); 
    }
}

//*********AdContent*********
function blurAdContent(value){
	var isblurAdContentOK = validateLooseUserName(value);
	if (!isblurAdContentOK){
	alert("You need to enter your ad in the box provided.");
	}
}

//*********LooseText*********
function validateLooseText(value) {
    var regLooseText = /^(\w|-|\.|\s)*$/;
    if (regLooseText.test(value)) {   
        return true;
    } else {
        return false;
    }                 
}

function blurLooseText(value) {
    var isblurLooseTextOK = validateLooseText(value);    
    if (!isblurLooseTextOK) {
	alert("The entered text must contain letters, numbers, dashes, periods, spaces and/or underscores only."); 
    }
}

//*********PostalCode*********
function validatePostalCode(value) {
    var regPostalCode = /[a-zA-Z0-9][\w|-]*$/;
    if (regPostalCode.test(value)) {   
        return true;
    } else {
        return false;
    }    
}

function blurPostalCode(value) {    
    var isblurPostalCodeOK = validatePostalCode(value);
    if (!isblurPostalCodeOK) {
    	alert("The entered zip code must begin with a number or letter, followed by letters, numbers, dashes and/or underscores only.");            
    }
}

//*********Email*********
function validateEmail(value) {
    var regEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (regEmail.test(value)) {   
        return true;
    } else {
        return false;
    }    
}
    
function blurEmail(value) {    
    var isblurEmailOK = validateEmail(value);
    if (!isblurEmailOK) {
        alert("The entered email address is not valid.");            
    }
}

//*********Multiple Email*********
function validateMultipleEmails(value) {
	if (value != "") {
	    var regEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	    var regFind = /\s/g;
 	    var regReplace = "";

 		//remove all whitespace
		value = value.replace(regFind, regReplace);

		//split up into array based on ';'
 		var arrEmail = value.split(",");

 		//check each email for validitity
 		var emailList = "";

 		for (i=0; i<= (arrEmail.length - 1); i++) {
 			currentEmail = arrEmail[i];
   			if (!regEmail.test(currentEmail)) {
				if (emailList.length == 0) {
	   				emailList = arrEmail[i];
				} else {
					emailList = emailList + ", " + arrEmail[i];
				}
    		}
 		}

		if (emailList.length > 0 ) {
			return false;		
		} else { 
			return true;
		}
	}
} 

function blurMultipleEmails(value) {
    var isblurMultipleEmailsOK = validateMultipleEmails(value);
    if (!isblurMultipleEmailsOK) {
        alert("The entered email address contain an error.");          
    }
}

//*********Password*********
function validatePassword(form_name, password1_name, value) {
	pwd1field = eval("document." + form_name + "." + password1_name);
	pwd1 = pwd1field.value;
	if (!(pwd1 == value)) {	
		pwd1  = "";
		return false;
	} else {         
		if (pwd1.replace(/\s/g, "") != "") {
			return true;
		} else {
			return false;
		}
	}
} 

function blurPassword(form_name, password1_name, value) {
    var isblurPasswordOK = validatePassword(form_name, password1_name, value);
    if (!isblurPasswordOK) {
        alert("The password fields do not match - please re-enter passwords.");
    }
}

function blurEmptyPassword(value) {
    if (value == "") {
        alert("The password field must not be empty.");
    }
}

//*********Date*********
function validateDate(form_name) {

	month = eval("document." + form_name + ".b1.value");
	day = eval("document." + form_name + ".b2.value");
	century = (eval("document." + form_name + ".b3.value")) + "00";
	year = eval("document." + form_name + ".b4.value");

	//If year is blank - do nothing
	//If year has text, ensure that it is two numbers
	
	if (year.length > 0) {
		var regYear = /\d{2}/;
		if (!regYear.test(year)) {
			return false;
		}		
	}
	
	//Leap Year?? Divisible by 4, or 400 (for last year in century)
	if ((year == "00") || (year == "")) {
		isLeapYear =(( century % 400) == 0) ? true : false;
	} else {
		isLeapYear = ((year % 4) == 0) ? true : false;
	}

	//April (3), June(5), Sept(8) and November(10) have 30 days

	switch(month) {
		case "3":         //fall
		case "5":         //fall
		case "8":         //fall
		case "10":  
		   if (day > 30) {
			  return false;
		   } else {
			  return true;
		   }
		case "1":
		   if (day > 28) {
			  if ((day == 29) && (isLeapYear)) {
				  return true;
			  } else {
				  return false;
			  }
		   } else {
			  return true;
		   }
		default:
		   return true;      
	}
}

//*********Select All*********

//Global Variable
var isChecked = false;
var isAlerted = false;
var upperBound = 28;

function selectAll(form_name) {

	formReference = eval("document." + form_name);

	//determine how many to check, cannot exceed 20 ads
	if (formReference.length > 28) {
		upperBound = 28;
	} else {
		upperBound = formReference.length;
	}
	

    if (isChecked) {
    	//commented out due to backend limitation
        //for (i=0; i<formReference.length; i++) {    
    	for (i=4; i<(upperBound - 4); i++) {
			if (formReference.elements[i].type == "checkbox") {	
				formReference.elements[i].checked = false;
			}
        }
        isChecked = false;
    } else {
    	//form has 6 radio buttons + 2 submits, they must be added to 20 
    	if (formReference.length > 28 && !isAlerted) {
    		alert("This feature can only select the first 20 ads.");
    		isAlerted = true;
    	}
    	//for loop goes to upperBound - 4  to account for three radio buttons and one submit
		for (i=4; i<(upperBound - 4); i++) {
			if (formReference.elements[i].type == "checkbox") {	
				formReference.elements[i].checked = true;
			}
		}
	
		isChecked = true;
		
    }
}

//*********User Registration********
function processUReg(form, form_name) {

	isHandleOK = validateUserName(form.display_handle.value);
	isDateOK = validateDate(form_name);
	isPostalCodeOK = validatePostalCode(form.postalcode.value);
	isEmailOK = validateEmail(form.email.value);
	isPasswordOK = validatePassword(form_name, 'password', form.password2.value);
	
	errorstatus = false;
	errorMessage = "Please enter correct value(s) for:";

	if (!isHandleOK) {
   		errorMessage += " User Name,"
   		errorstatus = "true";
	}  

	if (!isDateOK) {
    	errorMessage += " Date,"
    	errorstatus = "true";
	}

	if (!isPostalCodeOK) {
		errorMessage += " Zip Code,"
		errorstatus = "true";
	}	   

	if (!isEmailOK) {
		errorMessage += " Email,"
		errorstatus = "true";
	}  

	if (!isPasswordOK) {
		errorMessage += " Password,"
		errorstatus = "true";
	} 
	
	if (errorstatus) {
		errorMessage = errorMessage.slice(0, -1)
		errorMessage += ".";
		alert(errorMessage);
		return false;
	} else {
		return true;
	}
} 

//*********User Registration Update********
function processURegUpdate(form, form_name) {

	isDateOK = validateDate(form_name);
	isPostalCodeOK = validatePostalCode(form.postalcode.value);
	isEmailOK = validateEmail(form.email.value);
	isPasswordOK = validatePassword(form_name, 'password', form.password2.value);
	
	errorstatus = false;
	errorMessage = "Please enter correct value(s) for:";

	if (!isDateOK) {
    	errorMessage += " Date,"
    	errorstatus = "true";
	}

	if (!isPostalCodeOK) {
		errorMessage += " Zip Code,"
		errorstatus = "true";
	}	   

	if (!isEmailOK) {
		errorMessage += " Email,"
		errorstatus = "true";
	}  

	if (!isPasswordOK) {
		errorMessage += " Password,"
		errorstatus = "true";
	} 
	
	if (errorstatus) {
		errorMessage = errorMessage.slice(0, -1)
		errorMessage += ".";
		alert(errorMessage);
		return false;
	} else {
		return true;
	}
} 

//*********Forget Password********
function processForgetPassword (form) {
	
	isHandleOK = validateLooseUserName(form.display_handle.value);
	isEmailOK = validateEmail(form.email.value);
	errorstatus = false;
 	errorMessage = "Please enter correct value(s) for:";

	if (!isHandleOK) {
   		errorMessage += " User Name,"
   		errorstatus = "true";
	} 

	if (!isEmailOK) {
		errorMessage += " Email,"
		errorstatus = "true";
	}

	if (errorstatus) {
		errorMessage = errorMessage.slice(0, -1)
		errorMessage += ".";
		alert(errorMessage);
		return false;
	} else {
		return true;
	}      
}

//*********MyList********
function processMyList (form_name) {  

	formReference = eval("document." + form_name);

	//first step is to verify if more than 20 ads have been selected
	var adcount = 0;
	
	for (i=0; i<formReference.length; i++) {
		if (formReference.elements[i].type == "checkbox" && formReference.elements[i].checked == true) {	
			adcount++;
		}
	}
		
	if (adcount > 20) {
		alert("Please select 20 ads or less.");
		return false;
	}
	
	//20 or less ads checked, proceed as normal

	var chosen = false;
	var selected = false;

	var radiobuttons = formReference.action; 

	for (i=0; i<= radiobuttons.length - 1; i++ ){
		if (formReference.action[i].checked) {
			chosen = true;           
		}
	}

	if (formReference.marked.length > 0) {	
		for (i=0; i<= (formReference.marked.length -1); i++ ) {
			if (formReference.marked[i].checked) {
				selected = true;
			}
	   }
	} else {
		if (formReference.marked.checked) {
			selected = true;
		}
	}

	if (!chosen && !selected) {
		alert("Please select an action and ad(s).");
		return false;
	} else if (!chosen) {
		alert("Please choose an action.");
		return false;	
	} else if (!selected) {
		alert("Please choose an ad or ads.");
		return false;
	}

	return true;	
}

//*********MyList Email********
function processMyListEmail (form) {

	isEmailOK = validateEmail(form.email.value);
	isMultipleEmailsOK = validateMultipleEmails(form.readdress.value);
	errorstatus = false;
	errorMessage = "Please enter correct value(s) for:";

	if (!isEmailOK) {
		errorMessage += " Email,"
		errorstatus = "true";
	}

	if (!isMultipleEmailsOK) {
		errorMessage += " recipient(s) email address,";
		errorstatus = "true";
	}

	if (errorstatus) {
		errorMessage = errorMessage.slice(0, -1)
		errorMessage += ".";
		alert(errorMessage);
		return false;
	} else {
		return true;
	}        
}

//*********Login********
function processLogin (form) {

	isHandleOK = validateLooseUserName(form.display_handle.value);
	errorstatus = false;
	errorMessage = "Please enter correct value(s) for:";

	if (!isHandleOK) {
   		errorMessage += " User Name,";
   		errorstatus = "true";
	}

	if (form.password.value == "") {
	   errorMessage += " Password,";
	   errorstatus = "true";
	}

	if (errorstatus) {
		errorMessage = errorMessage.slice(0, -1)
		errorMessage += ".";
		alert(errorMessage);
		return false;
	} else {
		return true;
	}        
}

function validateDate(month, day) {
	if (month == "" || day == "")
		return false;
	switch(month) {
		case "4":         //fall
		case "6":         //fall
		case "9":         //fall
		case "11":  
		   if (day > 30) {
			  return false;
		   } else {
			  return true;
		   }
		case "2":
		   if (day < 30) {
			  return true;
		  } else {
			  return false;
		  }
		default:
		   return true;      
	}
} 

//*********Place An Ad********
function processPlaceAnAd(form) {
	
	isNameOK = validateLooseUserName(form.name.value);
	isContactNameOK = validateLooseUserName(form.contact_name.value);
	isPostalCodeOK = validatePostalCode(form.zip_code.value);
	isEmailOK = validateEmail(form.email.value);
	isAdContentOK = validateLooseUserName(form.ad_content.value)
	isStartDateOK = validateDate(form.start_month.options[form.start_month.selectedIndex].value, form.start_date.options[form.start_date.selectedIndex].value);
	isEndDateOK = validateDate(form.end_month.options[form.end_month.selectedIndex].value, form.end_date.options[form.end_date.selectedIndex].value);
	
	errorstatus = false;
	errorMessage = "Please enter correct value(s) for:";

	if (!isNameOK) {
   		errorMessage += " Name,"
   		errorstatus = "true";
	}

	if (!isContactNameOK) {
    	errorMessage += " Contact Name,"
    	errorstatus = "true";
	}

	if (!isPostalCodeOK) {
		errorMessage += " Zip Code,"
		errorstatus = "true";
	}

	if (!isEmailOK) {
		errorMessage += " Email,"
		errorstatus = "true";
	}
	
	if (!isAdContentOK) {
		errorMessage += " Ad Content,"
		errorstatus = "true";
	}

	if (!isStartDateOK){
		errorMessage += " Start Date,"
		errorstatus = "true";
	}

	if (!isEndDateOK){
		errorMessage += " End Date,"
		errorstatus = "true";
	}

	if (errorstatus) {
		errorMessage = errorMessage.slice(0, -1)
		errorMessage += ".";
		alert(errorMessage);
		return false;
	} else {
		form.submit();
		return true;
	}
} 




//*********The elements could not be selected from affiliate and regin boxes at the same time.
//*********If some element is selected in the affiliate box, unselect all elements in the region box.
function clickAffiliate(form_name, page, loc_box_displayed) {
	
   formReference = eval("document." + form_name);
   
   var i = 0;
   var numOfElemInBox = 0;

   // If some region is selected, 
   // we need to unselect all elements in the region box.

   
   // no newspaper or region dropdown displayed
	if(loc_box_displayed == 'false')
       return true;
   
   
   // request came from adhound page
	if (page == 'adhound') {  
       
       numOfElemInBox = formReference.elements["adh.category.cl_region"].length;
       while(i < numOfElemInBox) {
          // unselect the previously selected regions
          formReference.elements["adh.category.cl_region"].options[i].selected = false;
          i++;
       }

	// request came from search page
	} else if(page == 'search') {
       
       numOfElemInBox = formReference.elements["se.category.cl_region"].length;
       while(i < numOfElemInBox) {
          // unselect the previously selected regions
          formReference.elements["se.category.cl_region"].options[i].selected = false;
          i++;
       }
   } 

}



//*********The elements could not be selected from affiliate and regin boxes at the same time.
//*********If some element is selected in the region box, unselect all elements in the affiliate box.
function clickRegion(form_name, page, loc_box_displayed) {

   formReference = eval("document." + form_name);
   
   var i = 0;
   var numOfElemInBox = 0;

   // If some affiliate is selected, 
   // we need to unselect all elements in the affiliate box.

   
   // no newspaper or region dropdown displayed
	if(loc_box_displayed == 'false')
       return true;
   
   
   // request came from adhound page
	if (page == 'adhound') {  
       
      numOfElemInBox = formReference.elements["adh.category.affilcode"].length;
       while(i < numOfElemInBox) {
          // unselect the previously selected affiliates
          formReference.elements["adh.category.affilcode"].options[i].selected = false;
          i++;
       }

	// request came from search page
	} else if(page == 'search') {
       
      numOfElemInBox = formReference.elements["se.category.affilcode"].length;
       while(i < numOfElemInBox) {
          // unselect the previously selected affiliates
          formReference.elements["se.category.affilcode"].options[i].selected = false;
          i++;
       }
   } 

}
