function strTrim(tmpStr)
{
	tmpStr = tmpStr.replace(/^\s+/,"");//remove leading
	tmpStr = tmpStr.replace(/\s+$/,"");//remove trailing
	return tmpStr;
}
//=================================
function trimFields()
{
	for(var i=0; i < obj.elements.length; i++)
	{
		if(obj.elements[i].type == "text" || obj.elements[i].type == "textarea" || obj.elements[i].type == "password")
		{
			obj.elements[i].value = strTrim(obj.elements[i].value);
		}
	}
}
//======================================
//====Check for  valid email address====
//======================================
function chkEmail(tmpStr)
{
	var email_pat = /^[a-z][a-z0-9_\.\-]*[a-z0-9]@[a-z0-9]+[a-z0-9\.\-_]*\.[a-z]+$/i;
	return(email_pat.test(tmpStr));
}

//==============================
//=====Check for characters=====
//==============================
function validateTALength(strField, cntlName, maxChar)
{
	if(obj.elements[cntlName].value.length > maxChar)
	{
		alert(strField+" should be within "+maxChar+" characters.");
		obj.elements[cntlName].focus();
		obj.elements[cntlName].select();
		return false;
	}
	return true;
}

//============================================
//============ Checks for a float ============
//============================================
function isFloat(tmpStr)
{
	var price_pat = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	return(price_pat.test(tmpStr));
}

//Checks the Phone Number
function chkPhone(tmpStr)
{
	var str_pat = /^[a-z0-9]{3}-[a-z0-9]{3}-[a-z0-9]{4}$/i;
	return(str_pat.test(tmpStr));
}

//============================================
//============ Checks URL against link =======
//============================================
function chkURL(tmpStr)
{
	var url_pat = /^(http|https|ftp):\/\/([\w-]+\.)+[\w-]+(\/[\w-\.\/?%&amp;,=#@\/:]*)?/;
	return(url_pat.test(tmpStr));
}

//Refreshes captcha image
function refreshCaptcha(imgid)
{
	var newimg = new Image();
	newimg.src = 'includes/captcha/captcha.php?hash='+parseInt(Math.random() * 10000000000);
	newimg.onload = function(){document.getElementById(imgid).src = newimg.src;}
}

//=============================================
//======Function for opening a new window======
//=============================================
function showWindow(fName, width, height, left, top)
{
	window.open(fName, '', 'width='+width+',height='+height+',left='+left+',scrollbars=1,top='+top+',toolbar=0,menubar=0,location=0');
}

function validateWords(fieldMsg, cntlName, maxChar)
{
	var fieldVal = obj.elements[cntlName].value
	var iwhitespace = /^[^A-Za-z0-9]+/gi; // remove initial whitespace
	var leftTrimmedStr = fieldVal.replace(iwhitespace, "");
	var nonAlp = rExp = /[^A-Za-z0-9]+/gi; // non alphanumeric characters
	var cleanedStr = leftTrimmedStr.replace(nonAlp, " ");
	var splitString = cleanedStr.split(" ");
	var wordCount = splitString.length;

	if(wordCount > maxChar) //Checks the number of words is greater than word limit or not.
	{
		alert(fieldMsg+" should be within "+maxChar+" characters.");
		obj.elements[cntlName].focus();
		obj.elements[cntlName].select();
		return false;
	}
	return true;
}

//------------------------------------------------------------------------------------
//------------------------------------------------------------------//
//Generic AJAX object for all types of HTTP get/post work			//
//Author: Debabrata Kar (dk.webtenet@gmail.com)						//
//Usage:															//
//	var ajax = new AJAX();											//
//	var arrParam = new Array();										//
//	arrParam['name1'] = 'value1';									//
//	arrParam['name2'] = 'value2';									//
//	arrParam['name3'] = 'value3';									//
//	ajax.getRequest(url, arrParam, responseHandler);				//
//	OR																//
//	ajax.postRequest(url, arrParam, responseHandler);				//
//																	//
//	NOTE: You do not need to escape() or encodeURIComponent() the	//
//	parameter names or values. AJAX will do it on its own.			//
//	You need to define responseHandler() function that will handle	//
//	response back from the server, be it XML or anything else		//
//------------------------------------------------------------------//
//The AJAX object
function AJAX()
{
	//Private variables (properties)
	var __httpRequest = null;
	var __callbackFunc = null;

	//Private method: __createHttpRequest()
	var __createHttpRequest = function()
	{
		if(window.XMLHttpRequest) //Mozilla, Safari etc
		{
			__httpRequest = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) //IE
		{
			try
			{
				__httpRequest = new ActiveXObject("MSXML2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					__httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e)
				{
					//Do whatever you need to do here
					alert("AJAX cannot be used with your browser!");
				}
			}
		}
	}

	//Private method: __createParameters(arr)
	var __createParameters = function(arr)
	{
		var parameters = ""; //Initialize
		for(x in arr)
		{
			var pName = encodeURIComponent(x);
			var pVal = encodeURIComponent(arr[x]);
			parameters = (parameters == "")?pName+'='+pVal:parameters+'&'+pName+'='+pVal;
		}
		return parameters;
	}

	//Private method: __handleResponse()
	var __handleResponse = function()
	{
		if(__httpRequest.readyState == 4)
		{
			__callbackFunc(__httpRequest.responseText);
		}
	}

	//Public method: getRequest(url, arrParam, callbackFunc)
	this.getRequest = function(url, arrParam, callbackFunc)
	{
		__createHttpRequest() //recreate ajax object to defeat cache problem in IE
		__callbackFunc = callbackFunc;
		if(__httpRequest)
		{
			var param = __createParameters(arrParam);
			__httpRequest.onreadystatechange = __handleResponse;
			//Include a random number to defeat IE cache problem
			__httpRequest.open('GET', url+"?ajaxhash="+Math.random()+'&'+param, true);
			__httpRequest.send(null)
		}
	}

	//Public method: postRequest()
	this.postRequest = function(url, arrParam, callbackFunc)
	{
		__createHttpRequest() //recreate ajax object to defeat cache problem in IE
		__callbackFunc = callbackFunc;
		if (__httpRequest)
		{
			var param = __createParameters(arrParam);
			__httpRequest.onreadystatechange = __handleResponse;
			__httpRequest.open('POST', url, true);
			__httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
			__httpRequest.setRequestHeader("Content-length", param.length);
			__httpRequest.setRequestHeader("Connection", "close");
			__httpRequest.send(param);
		}
	}
}

function getChristmasDaysLeft()
{
   var now         = new Date();
   //Get the current date
   var months 	   = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
   var days 	   = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
   var daynumber   = now. getDay();
   var dayname	   = days[daynumber];
   var monthnumber = now.getMonth();
   var monthname   = months[monthnumber];
   var monthday    = now.getDate();
   var year        = now.getYear();
   if(year < 2000) { year = year + 1900; }
   var dateString = dayname + ', ' + monthname + ' ' + monthday + ', ' + year;

   //Get the current time
   var hour   = now.getHours();
   var minute = now.getMinutes();
   var second = now.getSeconds();
   var ap = "AM";
   if (hour   > 11) { ap = "PM";             }
   if (hour   > 12) { hour = hour - 12;      }
   if (hour   == 0) { hour = 12;             }
   if (hour   < 10) { hour   = "0" + hour;   }
   if (minute < 10) { minute = "0" + minute; }
   if (second < 10) { second = "0" + second; }
   var timeString = hour + ':' + minute + ':' + second + " " + ap;

   var christmas=new Date(now.getFullYear(), 11, 25) //Month is 0-11 in JavaScript
   if (now.getMonth()==11 && now.getDate()>25) //if Christmas has passed already
   christmas.setFullYear(christmas.getFullYear()+1) //calculate next year's Christmas

   //Set 1 day in milliseconds
   var one_day 		= 1000*60*60*24;
   var secsDiff 	= (christmas.getTime() - now.getTime())/1000;
   var secsLeft 	= Math.floor(secsDiff % 60) + " secs ";
   var minutesLeft  = Math.floor((secsDiff % 360)/60) + " mins ";
   var hoursLeft 	= Math.floor((secsDiff % 3600)/360) + " hours ";
   var daysLeft 	= Math.floor((secsDiff) / (3600*24))+ " days ";
   daysRemaining	= daysLeft + hoursLeft + minutesLeft + secsLeft +" left until Christmas!";

   var output = '<span style="color:#747474;font-weight:bold;font-style:italic;">'+ dateString +' ' + timeString+'</span>';
   output+= '<br />';
   output+= '<span class="red1b">'+ daysRemaining +'</span>';
   return output;
}

function validateSubscribe()
{
	trimFields();
	if(obj.subscriber_name.value == "")
	{
		alert("Please enter your Name.");
		obj.subscriber_name.focus();
		return;
	}
	if(obj.subscriber_address.value == "")
	{
		alert("Please enter your Address.");
		obj.subscriber_address.focus();
		return;
	}
	if(obj.subscriber_email.value == "")
	{
		alert("Please enter your Email Address.");
		obj.subscriber_email.focus();
		return;
	}
	if(!chkEmail(obj.subscriber_email.value))
	{
		alert("Please enter a valid Email Address.");
		obj.subscriber_email.focus();
		return;
	}
	obj.action = "subscribe_newsletter.html";
	obj.submit();
}
