/*
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
// SLNForm.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 separator = ",";  // use comma as 000's separator
var decpoint = ".";  // use period as decimal point
var percent = "%";
var currency = "$";  // use dollar sign for currency
	
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 formatNumber(number, format) {  // use: formatNumber(number, "format")   

    if (number - 0 != number) return null;  // if number is NaN return null
    var useSeparator = format.indexOf(separator) != -1;  // use separators in number
    var usePercent = format.indexOf(percent) != -1;  // convert output to percentage
    var useCurrency = format.indexOf(currency) != -1;  // use currency format
    var isNegative = (number < 0);
    number = Math.abs (number);
    if (usePercent) number *= 100;
    format = strip(format, separator + percent + currency);  // remove key characters
    number = "" + number;  // convert number input to string

     // split input value into LHS and RHS using decpoint as divider
    var dec = number.indexOf(decpoint) != -1;
    var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) : number;
    var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : "";

     // split format string into LHS and RHS using decpoint as divider
    dec = format.indexOf(decpoint) != -1;
    var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) : format;
    var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : "";

     // adjust decimal places by cropping or adding zeros to LHS of number
    if (srightEnd.length < nrightEnd.length) {
      var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
      nrightEnd = nrightEnd.substring(0, srightEnd.length);
      if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1);  // round up

      while (srightEnd.length > nrightEnd.length) {
        nrightEnd = "0" + nrightEnd;
      }

      if (srightEnd.length < nrightEnd.length) {
        nrightEnd = nrightEnd.substring(1);
        nleftEnd = (nleftEnd - 0) + 1;
      }
    } else {
      for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; i++) {
        if (srightEnd.charAt(i) == "0") nrightEnd += "0";  // append zero to RHS of number
        else break;
      }
    }

     // adjust leading zeros
    sleftEnd = strip(sleftEnd, "#");  // remove hashes from LHS of format
    while (sleftEnd.length > nleftEnd.length) {
      nleftEnd = "0" + nleftEnd;  // prepend zero to LHS of number
    }

    if (useSeparator) nleftEnd = separate(nleftEnd, separator);  // add separator
    var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : "");  // combine parts
    output = ((useCurrency) ? currency : "") + output + ((usePercent) ? percent : "");
    if (isNegative) {
      // patch suggested by Tom Denn 25/4/2001
      output = (useCurrency) ? "(" + output + ")" : "-" + output;
    }
    return output;
  }

  function strip(input, chars) {  // strip all characters in 'chars' from input
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++)
      if (chars.indexOf(input.charAt(i)) == -1)
        output += input.charAt(i);
    return output;
  }

  function separate(input, separator) {  // format input using 'separator' to mark 000's
    input = "" + input;
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++) {
      if (i != 0 && (input.length - i) % 3 == 0) output += separator;
      output += input.charAt(i);
    }
    return output;
  }
  
function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^(.+@.+\\.[a-zA-Z]+)$");
  return (!r1.test(str) && r2.test(str));
}  
  
function isNum(argvalue) {

 var argvalue = argvalue.toString();

 if (argvalue.length == 0) {
  return false;
 }
 
 for (var n = 0; n < argvalue.length; n++) {
  if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9") {
   return false;
  }
  return true;
 }
}

function IsInt(objStr,sign,zero) {

    var reg;    

    var bolzero;  
    
    if(Trim(objStr)=="") {

        return false;

    } else {

        objStr=objStr.toString();

    }    


    if((sign==null)||(Trim(sign)=="")) {

        sign="+-";

    }

    if((zero==null)||(Trim(zero)=="")) {

        bolzero=false;

    } else {

        zero=zero.toString();

        bolzero=true;

    }

    switch(sign) {

        case "+-":

            reg=/(^-?|^\+?)\d+$/;            

            break;

        case "+": 

            if(!bolzero) {
                reg=/^\+?[0-9]*[1-9][0-9]*$/;

            } else {

                reg=/^\+?[0-9]*[0-9][0-9]*$/;

            }

            break;

        case "-":

            if(!bolzero) {

                reg=/^-[0-9]*[1-9][0-9]*$/;

            } else {

                reg=/^-[0-9]*[0-9][0-9]*$/;

            }            

            break;

        default:

            return false;

            break;

    }

    var r=objStr.match(reg);

    if(r==null) {

        return false;

    } else {        

        return true;     

    }

}





function IsFloat(objStr,sign,zero) {

    var reg;
    var bolzero;    

    if(Trim(objStr)=="") {

        return false;

    } else {

        objStr=objStr.toString();

    }    

    

    if((sign==null)||(Trim(sign)=="")) {

        sign="+-";

    }

    if((zero==null)||(Trim(zero)=="")) {

        bolzero=false;

    } else {

        zero=zero.toString();

        bolzero=true;

    }

    switch(sign) {

        case "+-":

            reg=/^((-?|\+?)\d+)(\.\d+)?$/;

            break;

        case "+": 

            if(!bolzero) {

                reg=/^\+?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;

            } else {

                reg=/^\+?\d+(\.\d+)?$/;

            }

            break;

        case "-":

            if(!bolzero) {

                reg=/^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;

            } else {

                reg=/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/;

            }            

            break;

        default:

            return false;

            break;

    }

    

    var r=objStr.match(reg);

    if(r==null) {

        return false;

    } else {        

        return true;     

    }

}


function LTrim(str) {

	if(str) {
		str = str.replace(/^\s+/,"");
	} else {
		str = '';
	}
	
	return str;
}

function RTrim(str) {

	if(str) {
		str = str.replace(/\s+$/,"");
	} else {
		str = '';
	}
	
	return str;
}

function Trim(str) {
	return RTrim(LTrim(str));
}

function formHandler(formObj, strMessageText, escapeStrings, setcursor, dontValidate, aryIgnoreFields, bIgnoreCheck){
	if(formObj.oCNForm){
		var bReturn = formObj.oCNForm.handleSubmit(formObj, strMessageText, escapeStrings, setcursor, dontValidate, aryIgnoreFields, bIgnoreCheck);
		return bReturn;
	}
}

function PopupWindow (myLocation, scroll, width, height, windowName) {
	var oWin;
	
	//window.showModalDialog(myLocation,'','dialogHeight:'+height+'px;dialogWidth:'+width+'px;center:yes;resizeable:yes;help:no;status:no');
	if (!windowName) {
		windowName = '';
	}
	oWin = window.open(myLocation, windowName,"menubar=0,toolbar=0,location=0,directories=0,status=0,scrollbars=" + scroll + ",resizable=yes,width=" + width + ",height=" + height);
	oWin.focus();
	
}

function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString

   if (inputString != "" && inputString.length != 0) {
   
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { // String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      // Find a string that doesn't exist in the inputString to be used
      // as an "inbetween" string
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } // Keep on going until we build an "inbetween" string that doesn't exist
      // Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
      
      //alert(fromString);
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      // Next, replace the "inbetween" string with the "toString"
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } // Ends the check to see if the string being replaced is part of the replacement string or not
   return temp; // Send the updated string back to the user
   
   }
} 


function loadForm(sFormName){
	try{
		var oForm = document.forms[sFormName];
		var oCNForm = new CNForm();
		oCNForm.fromForm(oForm);
	}
	catch(e){}
}

function loadFormObj(oForm){
	try{
		var oCNForm = new CNForm();
		oCNForm.fromForm(oForm);
	}
	catch(e){}
}

function GetRightNow() {

	var RightNow = new Date();

	var todaydatum =  RightNow.getDate();
	
	
	var todaymonad =  RightNow.getMonth() + 1;
	
	var todayar =  RightNow.getFullYear();
	
	var sHour = RightNow.getHours();
	
	var sMinute = RightNow.getMinutes();
	
	var sSecond = RightNow.getSeconds();
	
	if (todaydatum < 10) {
	
		todaydatum = "0" + todaydatum;
	
	}
	
	if (todaymonad < 10) {
	
		todaymonad = "0" + todaymonad;
	
	}	
	
	if (sHour < 10) {
	
		sHour = "0" + sHour;
	
	}
	
	if (sMinute < 10) {
	
		sMinute = "0" + sMinute;
	
	}
	
	if (sSecond < 10) {
	
		sSecond = "0" + sSecond;
	
	}	
	
	
	
	var sRightnow = todaymonad + "-" + todaydatum + "-" + todayar + " " + sHour + ":" + sMinute + ":" + sSecond;
	
	return(sRightnow);
}



// -------------------------------------------------------------------------------
// Hallmark SOLUTION-SPECIFIC METHODS
// -------------------------------------------------------------------------------

  //var iTimer;

function cycle() {
    var i1 = "images/en-us/promo_corp1.gif";
    var i2 = "images/en-us/promo_corp2.gif";
	var i3 = "images/en-us/promo_corp3.gif";
	var i4 = "images/en-us/promo_corp4.gif";
	var i5 = "images/en-us/promo_corp5.gif";
    
    var oImgRotate = document.getElementById("ImgRotate");
    
    if (oImgRotate.src.indexOf(i1)!=-1) oImgRotate.src=eval("i" + new Number(2));
    else
        if (oImgRotate.src.indexOf(i2)!=-1) oImgRotate.src=i1;  
}

//	var iTimer = window.setInterval("cycle();", 1500);
	
	
function updateForBreaks(sValue){
	var re;
	re = /\r\n/g;
	sValue = sValue.replace(re,"<br/>");
	re = /\n/g;
	sValue = sValue.replace(re,"<br/>");

	return sValue;
}

function isDomain(str) {

	var reg = /^([a-z0-9]([-a-z0-9]*[a-z0-9])?\.)+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$/i;

	var r=str.match(reg);

	if(r==null) {

	return false;

	} else {        

	return true;     

	}
}  
  
	