/*
The SoftAd Group
Copyright (c) 2000-2005 The SoftAd Group, Inc.  All rights reserved
*/

// To use this object the following files must be also included.
// CNString.js
// CNForm.js

// -------------------------------------------------------------------------------
// File name        : SLNCommon.js [Common Solution JavaScript File]
// -------------------------------------------------------------------------------
// Author           : Ken Wimberley
// Created on       : Dec. 16, 2004
// 
// This file is intended to collect common solution JavaScript methods that
// implement the interfaces of the CNJavaScript Library classes.
// -------------------------------------------------------------------------------
// Last Updated     : 
// Updated by       : 
// -------------------------------------------------------------------------------
// Copyright (c) 2003 The SoftAd Group, Inc.

// -------------------------------------------------------------------------------
// GLOBAL VARIABLES
// -------------------------------------------------------------------------------

var g_SolutionErrorMsg = "The form is incomplete.";

function initCNForms(){
	var iLen = document.forms.length;
	for(var i=0; i<iLen; i++){
		loadForm(document.forms[i].name);
	}
}

function formHandler(formObj, strMessageText, escapeStrings, setcursor, dontValidate){
	if(formObj.oCNForm){
		var bReturn = formObj.oCNForm.handleSubmit(formObj, strMessageText, escapeStrings, setcursor, dontValidate);
		return bReturn;
	}
}

function validate() {
	try {
		var args = validate.arguments;		
		var bIsCNForm = (args[0].getValue)? true : false;
		var oRegExp;
		if(bIsCNForm){	//called from CNForm object
			var oCNForm = args[0];
			var regExpText = args[1];
			var sName = args[2];
			var errorMsg  = args[3];
			var value = oCNForm.getValue(sName); 
			
			oRegExp = new RegExp(regExpText,'');
			if (!oRegExp.test(oCNString.Trim(value))) {

				// displays an error message
				//alert(g_SolutionErrorMsg + '\n\n' + errorMsg);
				return false;
			} else {
				return true;
			}		
		} else {	//called from Form object
			var formElement = args[0];
			var regExpText = args[1];
			var errorMsg = args[2];
					
			oRegExp = new RegExp(regExpText,'');
			if (!oRegExp.test(oCNString.Trim(formElement.value))) {

				// displays an error message
				alert(g_SolutionErrorMsg + '\n\n' + errorMsg);

				// sets the field value to ""
				/*if (formElement.type=="text" 
					|| formElement.type=="textarea" 
					|| formElement.type=="password" 
					|| formElement.type=="file" 
					|| formElement.type=="hidden") {
						formElement.value = "";
				}*/
				// selects the field value
				if (formElement.focus) formElement.focus();
				if (formElement.select) formElement.select();								
				
				return false;
			} else {
				return true;
			}			
		}		
	}
	catch(e){
	}
}

function loadForm(sFormName){
	var oForm = document.forms[sFormName];
	var oCNForm = new CNForm();
	oCNForm.fromForm(oForm);
}

function loadFormObj(oForm){
	var oCNForm = new CNForm();
	oCNForm.fromForm(oForm);
}

function submitCNForm(oForm, bIgnoreChangeStatus){
	if(bIgnoreChangeStatus) {
		if(formHandler(oForm, "No changes have been made to the information in this form.", "", "", true, "", true))
			oForm.submit();
	} else {
		if(formHandler(oForm, "No changes have been made to the information in this form."))
			oForm.submit();
	}
}

function submitMultiAction(){
	var forms = submitMultiAction.arguments;
	var iLen = forms.length;
	var bProceed = true;
	for(var i=0; i<iLen; i++){
		if(!checkCNForm(forms[i]))
			bProceed = false;
			break;
	}
	if(bProceed){
		var aryForms = new Array();
		for(var i=0; i<iLen; i++){
			aryForms[aryForms.length] = forms[i];
		}
		var oForm = document.forms['default'];
		oForm.oCNForm.submitMultiActionWithArray(aryForms);
	}
}


function getCNForm(){
	oReturn = null;
	var iLen = document.forms.length;
	for(var i=0; i<iLen; i++){
		if(document.forms && document.forms[i].name.toString().toLowerCase() == "channelnet"){
			oReturn = document.forms[i];
			break;
		}			
	}
	return oReturn;
}

function checkCNForm(oForm){
	var bReturn = false;
	if(oForm.oCNForm && oForm.oCNForm.isValidForm(oForm)){
		bReturn = true;	
	} else {
		alert("The " + oForm.name + " is an invalid form.");
	}
	return bReturn;
}

function isValidDateRange(sSunrise, sSunset){			
	var bValid = false;
	var oSunrise = null;
	var oSunset = null;
	var iSeconds = 0;
	if(sSunrise != "")	oSunrise = getDate(sSunrise);
	if(sSunset != ""){
		oSunset = getDate(sSunset);
		iSeconds = oSunset.getSeconds();
		oSunset.setSeconds(iSeconds + 1);
	}
	if(sSunrise == "" && sSunset == "")	bValid = true;
	if((oSunrise && oSunset) && (oSunrise < oSunset)) bValid = true;
	if((oSunrise && !oSunset) || (!oSunrise && oSunset)) bValid = true;
	return bValid;
}

function getDate(sDate){
	//sDate format = "MM/dd/yyyy"
	var oDate;
	var arryDate = sDate.split('/');
	var sDateFormat = arryDate[2] + "/" + arryDate[0] + "/" + arryDate[1];
	oDate = new Date(sDateFormat);
	return oDate;
}


function formatDisplayDate(sDate){
	var sMonth, sDay, sYear;
	var arryDate;
	if(sDate != null && sDate.length > 0){
		// sDate format can be yyyy-mm-dd 
		// or mm/dd/yyyy 12:00:00 AM 
		// or MMM dd, yyyy PM PST
		if(sDate.indexOf("/") > -1){ 
			var iSpace = sDate.indexOf(" ");
			if(iSpace >= 0) sDate = sDate.substring(0, iSpace);
			
			arryDate = sDate.split("/");
			sMonth = arryDate[0];
			if(sMonth.length == 1) sMonth = "0" + sMonth;
			
			sDay = arryDate[1];
			if(sDay.length == 1)sDay = "0" + sDay;
			
			sYear = arryDate[2];
			sDate = sMonth + "/" + sDay + "/" + sYear;
		} else if(sDate.indexOf("23:59:59") > -1){
			var iSpace = sDate.indexOf(" ");
			sDate = sDate.substring(0, iSpace);
		} else if(sDate.indexOf("PM") > -1){
			var i = sDate.indexOf("PM");
			sDate = sDate.substring(0, i);
		} else if(sDate.indexOf("AM") > -1){
			var i = sDate.indexOf("AM");
			sDate = sDate.substring(0, i);
		}
		// Requires CNString.js
		sDate = oCNString.Trim(sDate);
	} else {
		sDate = "";
	}
	return sDate;
}

function disableLinks(){
	var aryLinks = window.document.links;	
	var iLen = aryLinks.length;	
	for (var i=0; i<iLen; i++){
		aryLinks[i].clearAttributes();
		aryLinks[i].onclick = null;
	}
}

function disablePage(){
	var oDiv = document.createElement("DIV");
	oDiv.style.zIndex = 10000;
	oDiv.style.position = "absolute";
	oDiv.style.height = "100%";
	oDiv.style.width = "100%";
	oDiv.style.left = "0px";
	oDiv.style.top = "0px";
	oDiv.style.cursor = "wait";
	oDiv.style.backgroundColor = "Transparent";
	document.body.appendChild(oDiv);
}
// -------------------------------------------------------------------------------
// SOLUTION-SPECIFIC METHODS
// -------------------------------------------------------------------------------