var LightboxHolder = {	
	DestroyCreate:function( id , cClass ) {
		if( typeof( cClass ) == "undefined" ) {
			cClass="";
		}
		if( $('boxContents') ) {
			$('boxContents').update("&nbsp;")
		}
		
		if( $( id ) ) {
			$( id ).remove();			
		}
		if( !$( id ) ) {
			Element.extend( document.getElementsByTagName("body")[0] ).insert("<div class='" + cClass + "' id='" + id + "' style='display:none'></div>");
		}
	},
	Close:function( doConfirm ) {
		if( typeof( doConfirm ) == "undefined" ) {
			doConfirm = false;
		}
		if( doConfirm ) {
			var confirmation = confirm("Are you sure you want to cancel?");
			if( confirmation ) {
				Element.hide('box');
				Element.hide('dcoverlay');
			}
		} else {
			Element.hide('box');
			Element.hide('dcoverlay');
		}
	}
}

var KillarneyGolf = {
	Webcam : {
		PE:null,
		View:function() {
			var url = "index.cfm?action=Webcam_View";
			new Ajax.Request( url, {asynchronous:true, onSuccess:KillarneyGolf.Webcam.View_onSuccess, onFailure:errFunc});
		},
		View_onSuccess:function(t) {
			z = parseJSON( t.responseText );
			LightboxHolder.DestroyCreate("LightboxHolder");		
			$("LightboxHolder").update( z.webcamHTML );
			DCLightbox.showBoxByID( "LightboxHolder", 710, 580, false );
		},
		Start:function() {
			KillarneyGolf.Webcam.PE = new PeriodicalExecuter( KillarneyGolf.Webcam.Refresh , 30 );
		},
		Refresh:function() {
			var url = "index.cfm?action=Webcam_Refresh";
			new Ajax.Request( url, {asynchronous:true, onSuccess:KillarneyGolf.Webcam.Refresh_onSuccess, onFailure:errFunc});
		},
		Refresh_onSuccess:function(t) {
			z = parseJSON( t.responseText );
			if( $("lbBody") ) {
				if( $("webcamDate" ) ) {
					$("webcamDate").update( z.webcamDate );
				}
				$("lbBody").update( z.webcamImageHTML )
			}
		},
		Stop:function() {
			KillarneyGolf.Webcam.PE.stop();
			LightboxHolder.Close();
		}
	},
	SideItems : {
		Newsletter : {
			Validate : function() {
				if($("nlName").value.blank()) {
					KillarneyGolf.HighlightAndFocus("nlName");
					return false;
				}
				if($("nlEmail").value.blank() || !$("nlEmail").value.isEmail()) {
					KillarneyGolf.HighlightAndFocus("nlEmail");
					return false;
				}
				return true;
			}
		}
	},
	HighlightAndFocus:function(id) {
		new Effect.Highlight(id);
		$(id).focus();
	}
}


var CreditCard = {
	IsVisa:function(cc) {
		if(((cc.length == 16) || (cc.length == 13)) && (cc.substring(0,1) == 4)) {
			return CreditCard.IsCreditCard(cc);
		} else {
			 return false;
		}
	},
	IsMasterCard:function(cc) {
		var firstdig = cc.substring(0,1);
		var seconddig = cc.substring(1,2);
		if((cc.length == 16) && (firstdig == 5) && ((seconddig >= 1) && (seconddig <= 5))) {
			return CreditCard.IsCreditCard(cc);
		} else {
			return false;
		}
	},
	IsAmericanExpress:function(cc) {
		var firstdig = cc.substring(0,1);
		var seconddig = cc.substring(1,2);
		if((cc.length == 15) && (firstdig == 3) && ((seconddig == 4) || (seconddig == 7))) {
			return CreditCard.IsCreditCard(cc);
		} else {
			return false;
		}
	},
	IsLaser:function(cc) {
		if((cc.length == 19) && isNumeric(cc)) {
			return true;
		} else {
			return false;
		}
	},
	IsCreditCard:function(st) {
		if(st.length > 19) {
			return false;
		}		
		var sum = 0; 
		var mul = 1; 
		var l = st.length;
		for(i = 0;i<l;i++) {
			digit = st.substring(l-i-1,l-i);
		    tproduct = parseInt(digit ,10)*mul;
		    if (tproduct >= 10) {
		      sum += (tproduct % 10) + 1;
		    } else {
		      sum += tproduct;
			}
		    if(mul == 1) {
		      mul++;
		    } else {
		      mul--;
			}
		}
		
		if((sum % 10) == 0) {
			return true;
		} else {
			return false;
		}
	}
}

String.prototype.isEmail = function () { 
	var rx = new RegExp("\\w+([-+.\’]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 
	var matches = rx.exec(this); 
	return (matches != null && this == matches[0]); 
}

function isNumeric(x) { 
	var y=parseInt(x); 
	if (isNaN(y)) {
	   return false; 
	} else {
		return true;
	}
} 

function LoadingAjax(txt) {
	if(typeof(txt)=="undefined") {
		txt = "Loading...";
	}
	return "<div class='ajaxMsg' id='widgetAjaxMsg'> "+txt+"</div>";
}

function parseJSON( json ){
	var o = eval('(' + json + ')');
	if( o.redirectURL )
	{
		document.location = o.redirectURL;
		return;
	}
	if( $("message") != null ) new Element.remove( "message" );
	if( o.errMsg )
	{
		if( o.errMsgTitle == null ) o.errMsgTitle = "Error";
		if( o.errMsgTimer == null ) o.errMsgTimer = 5000;
		tw.ShowMessage( o.errMsgTitle, o.errMsg, "error", o.errMsgTimer, o.errMsgPosition );
		return o;
	}
	if( o.msgTitle || o.msg )
	{
		if( o.msgTimer == null ) o.msgTimer = 5000;
		tw.ShowMessage( o.msgTitle, o.msg, o.msgClass, o.msgTimer, o.msgPosition );
	}
	return o;
}

var errFunc = function(t) {
	var win = window.open("", "win", "width=1024,height=700,resizable=yes,scrollbars=yes,status=no"); // a window object
	win.document.open("text/html", "replace");
	win.document.write( "<html><body style='margin:0'><div style='border-bottom:1px solid #222;background:#666;padding:10px;'><h1 style='color:#FFF;margin:0;padding:0;'>Digital Crew Ajax Error</h1></div><div style='padding:10px;'>"+t.responseText.replace(/^\s+|\s+$/, '') + "</div></body></html>" );
	win.document.close();
	win.focus();
}
