var PRCalendar = {
	Calendar : {
		NextMonth:function(year,month) {
			var url = "index.cfm?action=Calendar_NextMonth&year="+year+"&month="+month;
			new Ajax.Request( url, {asynchronous:true, evalScripts:false, onSuccess:PRCalendar.Calendar.NextMonth_onSuccess, onFailure:errFunc});
			return false;
		},
		NextMonth_onSuccess:function(t) {
			z = parseJSON(t.responseText);
			$("calendarPlaceholder").update(z.calendarHTML);
		},
		PreviousMonth:function(year,month) {
			var url = "index.cfm?action=Calendar_PreviousMonth&year="+year+"&month="+month;
			new Ajax.Request( url, {asynchronous:true, evalScripts:false, onSuccess:PRCalendar.Calendar.PreviousMonth_onSuccess, onFailure:errFunc});
			return false;
		},
		PreviousMonth_onSuccess:function(t) {
			z = parseJSON(t.responseText);
			$("calendarPlaceholder").update(z.calendarHTML);
		}
	},	
	ChangeProductView:function(id) {
		var ppId = $("productChanger").value;
		if(ppId!=0) {			
			var url = "index.cfm?action=Products_GetProductDetails&id="+id+"&ppId="+ppId;
			new Ajax.Request( url, {asynchronous:true, evalScripts:false, onSuccess:Enibas.ChangeProductView_onSuccess, onFailure:errFunc});
		}
	}	
	,ChangeProductView_onSuccess:function(t) {
		z = parseJSON( t.responseText );
		$("productImage").src = "contentFiles/products/" + z.fullImage;
		$("productPriceEuro").innerHTML = z.price;
		$("productPriceUSD").innerHTML = "(appr. $"+z.usdprice+" , &pound;" + z.gbpprice + ")";
		$("ppId").value = z.ppId;
		$("productDetailGrid").update(z.productHTML);
	}	
}
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();
}