var OneDay = 86400000;
var OneMonth = (OneDay * 30);
var CurrentDate = new Date();
var CurrentMonth = '';
var varMonth = new Array(12);
varMonth[1] = 'January';
varMonth[2] = 'February';
varMonth[3] = 'March';
varMonth[4] = 'April';
varMonth[5] = 'May';
varMonth[6] = 'June';
varMonth[7] = 'July';
varMonth[8] = 'August';
varMonth[9] = 'September';
varMonth[10] = 'October';
varMonth[11] = 'November';
varMonth[12] = 'December';
var bOpening = false;
var bPopupOpen = false;

function GetObject(id)
{
	var obj = document.layers ? document.layers[id] :
	document.getElementById ? document.getElementById(id) :
	document.all[id];
	return obj;
}

function DoCalendar(TheDate)
{
	//alert(TheDate);
	var RefDate = new Date(TheDate);
	//alert(RefDate.toString());
	CurrentMonth = varMonth[RefDate.getMonth() + 1] + ' ' + RefDate.getFullYear();
	CurrentDate = RefDate;
	RefDate = new Date(RefDate.getFullYear(), RefDate.getMonth(), 1);
	RefDate.setDate(RefDate.getDate() - RefDate.getDay());
	ShowCalendar(RefDate);
}

function Prev()
{
	var pDate = new Date(CurrentDate);
	pDate.setMonth(pDate.getMonth() - 1);
	DoCalendar(pDate);
}

function Next()
{
	var nDate = new Date(CurrentDate);
	nDate.setMonth(nDate.getMonth() + 1);
	DoCalendar(nDate);
}

function ShowCalendar(theDate)
{
	GetObject('getWedDate').innerHTML = '';
	var DateLoop = new Date(theDate);
	var varCal = '<table border="0" cellspacing="2" cellpadding="1" class="calendar">';
	varCal += '<tr><td onclick="Prev()" class="clicker">&lt;</td>';
	varCal += '<td colspan="5" align="center">' + CurrentMonth + '</td>';
	varCal += '<td onclick="Next()" class="clicker">&gt;</td></tr>';
	
	// My code
	varCal += '<tr><td align="center">S</td>';
	varCal += '<td align="center">M</td>';
	varCal += '<td align="center">T</td>';
	varCal += '<td align="center">W</td>';
	varCal += '<td align="center">T</td>';
	varCal += '<td align="center">F</td>';
	varCal += '<td align="center">S</td></tr>';
	
	for (var r = 1; r <= 6; r++)
	{
		varCal += '<tr>';
		for (var c = 1; c <= 7; c++)
		{
			varCal += '<td align="right" onclick="SetDate(' + "'";
			varCal +=	(DateLoop.getMonth()+1) + '/' + DateLoop.getDate() + '/' + DateLoop.getFullYear();
			varCal += "'" + ')" class="calday">' + DateLoop.getDate() + '</td>';
			DateLoop.setDate(DateLoop.getDate() + 1);
		}
		varCal += '</tr>';
	}
	varCal += '</table>';
	GetObject('getWedDate').innerHTML = varCal
}

function ClosePopups()
{
	if (bOpening) {
		bOpening = false;
		bPopupOpen = true;
		return true;
	}
	if (!bPopupOpen) return true;
	
	if (document.getElementById) {
		document.getElementById('getWedDate').style.display = 'none';
		document.getElementById('getWedTime').style.display = 'none';
		document.getElementById('getRecTime').style.display = 'none';
	} else if (document.all) {
		getWedDate.style.display = 'none';
		getWedTime.style.display = 'none';
		getRecTime.style.display = 'none';
	} else {
		document.getWedDate.style.display = 'none';
		document.getWedTime.style.display = 'none';
		document.getRecTime.style.display = 'none';
	}
	
	bPopupOpen = false;
	return true;
}

function GetWeddingDate()
{
	ClosePopups();
	DoCalendar(GetObject('txtWedDate').value);
	GetObject('getWedDate').style.display = 'block';
	bOpening = true;
	return false;
}

function SetDate(theDate)
{
	GetObject('txtWedDate').value = theDate;
	ClosePopups();
	GetObject('getWedDate').innerHTML = '';
	return false;
}

function GetWeddingTime()
{
	ClosePopups();
	GetObject('getWedTime').style.display = 'block';
	bOpening = true;
	return false;
}

function GetReceptionTime()
{
	ClosePopups();
	GetObject('getRecTime').style.display = 'block';
	bOpening = true;
	return false;
}

function SetWeddingTime(newTime)
{
	GetObject('txtWedTime').value = newTime;
	ClosePopups();
	return false;
}

function SetReceptionTime(newTime)
{
	GetObject('txtRecTime').value = newTime;
	ClosePopups();
	return false;
}



// ***************************************************************************************************
//											MasterPage Functions -- Do not Delete !!!
// ***************************************************************************************************
 
 function initMaster(pageTitleSrc,  pageTitleDest, descriptionArea, pageTextArea )
 { 
    if (pageTitleDest != null &&  pageTitleSrc != null)
     {
        pageTitleDest.innerHTML = pageTitleSrc.innerHTML;
        pageTitleSrc.parentNode.removeChild(pageTitleSrc);
      }
        else if  (pageTitleDest != null) 
      {
        pageTitleDest.style.display = 'none';
      }

 //   var descLength = new String( descriptionArea.innerText ) ;
 //   if  (descLength.length < 5)
 //    {
 //      pageTextArea.style.display= "none" ;
 //    }
 
 }

 // ***************************************************************************************************
 //											Search Functions
 // ***************************************************************************************************
 var strSearchclear = "";
 var strSearchdefault = "Search";
 var strSearchbad = "Invalid Search";
 var Timers = new Array();

 function SearchTextTimer(SearchText, SearchButton, Timer) {
     Timers[Timer] = setTimeout("  UpdateSearchText(     SearchText  ,  SearchButton )  ", 2000);
 }


 function SearchPhraseFilled(SearchText, SearchButton) {
     // chesk for blank
     var strSearchPhrase = SearchText.value.replace(/ /g, '');

     if (strSearchPhrase.length < 1) {
         SearchButton.className = "searchBad";
         SearchText.style.color = "Red";
     }
     else {
         SearchButton.className = "searchClear";
         SearchText.style.color = "#555";
     }
 }

 function UpdateSearchText(SearchText, SearchButton, Timer, state) {
     if (Timers[Timer] == null) {
         Timers[Timer] = 0;
     }

     switch (state) {
         case 'clear':
             {
                 clearTimeout(Timers[Timer]);
                 SearchText.value = strSearchclear;
                 SearchText.style.color = "#555";
                 break;
             }

         case 'error':
             {
                 SearchText.value = strSearchbad;
                 SearchText.style.color = "#555";
                 break;
             }

         default:
             {
                 SearchText.value = strSearchdefault;
                 SearchText.style.color = "#bbb";
                 SearchButton.className = "searchClear";
                 break;
             }
     }
 }

 function searchRequest(SearchText, SearchButton, Timer, Form, Action) {

     // blank check
     SearchPhraseFilled(SearchText, SearchButton);

     // filter for error
     if (SearchButton.className != "searchClear" ||
       -1 != SearchText.value.indexOf(strSearchbad) ||
       -1 != SearchText.value.indexOf(strSearchdefault)
      ) {

         UpdateSearchText(SearchText, SearchButton, Timer, 'error');
         SearchButton.className = "searchBad";
         SearchText.style.color = "Red";
         SearchTextTimer(SearchText, SearchButton, Timer);
         return false;
     }

     // submit search
     Form.method = 'post';
     Form.action = Action + SearchText.value;
     Form.target = '_self';
     Form.submit()
     return true;
 }
 /**
 * emailsubscribe.js
 *
 * Functions for the e-mail subscription link in the navigation menu
 */

 var DefaultSubscribeText = 'e-mail address';
 var InvalidAddressText = 'Invalid address';

 function subscribe(emailAddress) {
     var http_request;

     if (emailAddress.length == 0 || emailAddress == DefaultSubscribeText)
         return;

     if (emailAddress.indexOf('@') < 0) {
         subscribeTextBox = document.getElementById('subscribeTextbox');
         subscribeTextBox.value = InvalidAddressText;
         subscribeTextBox.className = 'subscribeErrorText';
         return;
     }

     if (window.XMLHttpRequest) {
         http_request = new XMLHttpRequest();
     } else if (window.ActiveXObject) {
         try {
             http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
             try {
                 http_request = new ActiveXObject("Microsoft.XMLHTTP");
             } catch (e) { }
         }
     }

     if (http_request) {
         var soap = '<?xml version="1.0" encoding="utf-8"?>\
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\
  <soap:Body>\
    <Add xmlns="http://1st-class-wedding-invitations.com/">\
      <emailAddress>' + emailAddress + '</emailAddress>\
    </Add>\
  </soap:Body>\
</soap:Envelope>';

         http_request.open('POST', '/subscribe.asmx', true);

         http_request.onreadystatechange = function() {
             if (http_request.readyState == 4 && http_request.status == 200) {
                 alert("Thank you!  Your e-mail address has been added to our mailing list.");
             }
         }

         http_request.setRequestHeader("Content-type", "text/xml; charset=utf-8");
         http_request.setRequestHeader("Content-length", soap.length);
         http_request.setRequestHeader("Connection", "close");
         http_request.send(soap);
     }
 }

 function subscribe_checkSubmit(event) {
     if (event.keyCode == 13) {
         subscribe(document.getElementById('subscribeTextbox').value);
         return false;
     }

     return true;
 }
 // Original JavaScript code by Duncan Crombie: dcrombie@chirp.com.au
 // Please acknowledge use of this code by including this header.

 var bikky = document.cookie;

 function getCookie(name) { // use: getCookie("name");
     var index = bikky.indexOf(name + "=");
     if (index == -1) return null;
     index = bikky.indexOf("=", index) + 1;
     var endstr = bikky.indexOf(";", index);
     if (endstr == -1) endstr = bikky.length;
     return unescape(bikky.substring(index, endstr));
 }

 var today = new Date();
 var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // plus 28 days
 var expired = new Date(today.getTime() - 28 * 24 * 60 * 60 * 1000); // less 28 days

 function setCookie(name, value) { // use: setCookie("name", value);
     if (value != null && value != "")
         document.cookie = name + "=" + escape(value) +
        "; domain=" + document.domain +
        "; expires=" + expiry.toGMTString();
     bikky = document.cookie; // update bikky
     return getCookie(name) != null; // return false if the cookie was refused
 }

 function deleteCookie(name) { // use: deleteCookie("name");
     document.cookie = name + "=null; expires=" + expired.toGMTString(); // delete cookie
     bikky = document.cookie; // update bikky
     document.forms[0].cookieContent.value = formatCookie(); // display cookie content
 }

 function makeCookie() { // make sure the cookie is set
     var form = document.forms[0];
     while (!setCookie(form.targetcookie.value, form.content.value)) {
         if (!confirm('The cookie was not accepted by your browser\nYou must allow cookies to use this page')) {
             alert('By refusing our harmless cookie strings\nyou are preventing this page from operating correctly\nCome back when you are ready to cooperate');
             history.back(); // take them out of the page
             break;
         }
     }
     form.cookieContent.value = formatCookie(); // display cookie content
 }

 function formatCookie() {
     var retValue = "";
     with (bikky) {
         for (var i = 0; i < length; i++)
             retValue += (charAt(i) != " ") ? charAt(i) : "\n";
     }
     return retValue;
 }
 var screenW = 1024, screenH = 786;

 if (parseInt(navigator.appVersion) > 3) {
     screenW = screen.width;
     screenH = screen.height;
 }
 else if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 3) && navigator.javaEnabled()) {
     var jToolkit = java.awt.Toolkit.getDefaultToolkit();
     var jScreenSize = jToolkit.getScreenSize();
     screenW = jScreenSize.width;
     screenH = jScreenSize.height;
 }
 setCookie("screenW", screenW);
 setCookie("screenH", screenH);

 /******** cart.js *********/
 function ItemReminder() {
     if (confirm('Each ensemble set has several matching items that should be ordered together!\r\n\r\nReception cards, "Respond By" cards, "Thank You" notes, and Wedding Announcements may be available in this ensemble.\r\n\r\nIf you need to add additional matching items, click "Cancel" then click "Continue Shopping", otherwise click "OK" to continue your final purchase.')) {
         return true;
     }
     else
         return false;
 }

 function HideSomething() {
     ShowHide('cartEmpty', (iItemCount == 0 ? 1 : 0));
     ShowHide('cartHeader', (iItemCount == 0 ? 0 : 1));
     ShowHide('cartPurchase', (iItemCount == 0 ? 0 : 1));
     ShowHide('cartSummary', (iItemCount == 0 ? 0 : 1));
     ShowHide('cartProofButtons', (iItemCount == 0 ? 0 : 1));
 }
 function DeleteItem(sItem, sSetID, sPieceID, sCardType) {
     // Hide this item
     ShowHide(sItem, 0);

     // Decrement the count
     iItemCount -= 1;
     if (iItemCount == 0) HideSomething();

     // Remove this item from the cart
     var obj = GetObject('dummy');
     obj.src = "order.aspx?sel=F&opt=order&set=" + sSetID +
            "&piece=" + sPieceID + "&type=" + sCardType;
     var obj = GetObject('total');
     obj.src = "summary.aspx?type=total&time=" + TimeString();
     return true;
 }

 function DeleteConfirmItem(sItem, sSetID, sPieceID, sCardType) {
     // Hide this item
     var obj = GetObject(sItem);

     if (obj != null) {
         obj.className = "div_off";

         // Decrement the count
         iItemCount -= 1;

         if (iItemCount == 0) {
             document.getElementById('confirmMain').className = "div_off";
             document.getElementById('divPayment').className = "div_off";
             document.getElementById('cartEmpty').className = "div_on";
         }

         // Remove this item from the cart
         var obj = GetObject('dummy');
         obj.src = "order.aspx?sel=F&opt=order&set=" + sSetID +
				"&piece=" + sPieceID + "&type=" + sCardType;
         var obj = GetObject('total');
         obj.src = "summary.aspx?type=grand&time=" + TimeString();
     }

     return true;
 }

 function Magnify(img) {
     var PageHTML = "<html><head><title>Magnify Item</title></head>" +
					"<body><table align='center'><tr><td align='center'>" +
					"<img src='" + img + "'></td></tr>" +
					"<tr><td align='center'><br><a style='cursor: pointer; color: #756587; font-family: Verdana, Verdana, Arial, Helvetica; font-size: 12px; font-decoration: underline;' href='javascript:window.close()'>Close Window</a>" +
					"</td></tr></table></body></html>";

     var win = window.open("", "magnify", "width=620, height=620, left=" + ((screen.width / 2) - 310) + ", top=" + ((screen.height / 2) - 310) + ", menubar=no, status=no, location=no, toolbar=no, scrollbars=no, resizable=no");

     win.document.write(PageHTML);
     win.document.close();
 }

 (function($) { $.fn.collapsorz = function(options) { var defaults = { toggle: "> *", minimum: 5, showText: "Show", hideText: "Hide", linkLocation: "after", defaultState: "collapsed", wrapLink: null }; var options = $.extend(defaults, options); return this.each(function() { if ($(options.toggle, this).length > options.minimum) { var $obj = $(this); var $targets = $(options.toggle, this); if (options.defaultState == "collapsed") { $targets.filter(":gt(" + (options.minimum - 1) + ")").hide() } var $toggler = $('<a href="#" class="toggler"></a>'); if (options.linkLocation == "before") { $obj.before($toggler) } else { $obj.after($toggler) } if (options.wrapLink) { $toggler.wrap(options.wrapLink) } if (options.defaultState == "expanded") { $obj.data("status", "expanded"); $toggler.addClass("expanded"); $toggler.html(options.hideText) } else { $obj.data("status", "collapsed"); $toggler.addClass("collapsed"); $toggler.html(options.showText) } $toggler.click(function() { if ($obj.data("status") == "collapsed") { $targets.filter(":hidden").show(); $toggler.html(options.hideText); $obj.data("status", "expanded") } else if ($obj.data("status") == "expanded") { $targets.filter(":gt(" + (options.minimum - 1) + ")").hide(); $toggler.html(options.showText); $obj.data("status", "collapsed") } $(this).toggleClass("collapsed").toggleClass("expanded"); return false }) } }) } })(jQuery);

 function validateEmail(sender, args) {
     if (args.Value.length > 0) {
         var ex = /^([a-zA-Z0-9_.+-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
         var re = new RegExp(ex);

         if (re.exec(args.Value)) {
             args.IsValid = true;
         }
         else {
             sender.errormessage = "Please enter a valid e-mail address";
             sender.innerHTML = sender.errormessage;
             args.IsValid = false;
         }
     }
     else {
         sender.errormessage = "Please enter your e-mail address";
         sender.innerHTML = sender.errormessage;
         args.IsValid = false;
     }
 }