/*
*	Author Deepak Kumar
*	Created February 20, 2008
*   All the commonly used functions can be placed here.
*/


function checkAll(formObj, count) {
	if (count == 1) {
		formObj.checked = true;
	} else {
		for(i = 0; i < count; i++) {
			formObj[i].checked = true;
		}
	}
}

function unCheckAll(formObj, count) {
	if (count == 1) {
		formObj.checked = false;
	} else {
		for(i = 0; i < count; i++) {
			formObj[i].checked = false;
		}
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function setCaretPosition(elem, caretPos) {
    //var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else{
                elem.focus();
            }
        }
    }
}


 function enterLoginField(formName, fieldId){
	var form = document.getElementById(formName);
	var elts = form.getElementsByTagName("input");
	var field;
	for(i = 0; i < elts.length; i++){
		field = elts[i];
		if(field.id == fieldId)
			break;
	}

  	//var field = document[formName][fieldId];
	field.style.color = "#000000";
 	if((field.id == "phone" || field.id == "pop_phone" || field.id == "nav_phone" || field.id == "reg_phone") && 
 		(field.value == "9876543210" || field.value == "Phone #")){
 		field.value = "";
 		field.maxLength = "15";
 	}
 	
 	if((field.id == "yob" || field.id == "pop_yob" || field.id == "nav_yob") &&
 		(field.value == "Year of Birth" || field.value == "19YY")){
 		field.value = "";
 		field.maxLength = "4";
 	} 		
 	
 
 	setCaretPosition(field, field.value.length);
 	
  	return;
 }
 
 function exitLoginField(field, label){
 	if(field.value == "" || field.value == "19"){
 		field.style.color = "#aaaaaa";
 		if(field.id == "phone" || field.id == "pop_phone")
 			field.maxLength = "15";
 		else
 			field.maxLength = "100";
 		
 		field.value = label;
 	}
 }
 
 function validate_email(str) {
		var emailRegxp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if(emailRegxp.test(str))
			return true;
		else
			return false;
}

function validate_zip(str){
		var regxp = /^[0-9]{5}$/;
		if(regxp.test(str))
			return true;
		else
			return false;
}

function validate_phone(str){
		str=trim_phone(str);
		var regxp = /^[0-9]{10}$/;
		if(regxp.test(str))
			return true;
		else
			return false;
}
 function trim_phone(phone_num){
 	var phone=phone_num.replace('(','');
 	phone=phone_num.replace(')','');
 	phone=phone_num.replace(' ','');
 	phone=phone_num.replace('-','');
 	phone=phone_num.replace('.','');
 	return phone;
 }
 function onSavingsSubmit(inputId, errorId){
 	var emailInput = document.getElementById(inputId);
 	var emailError = document.getElementById(errorId);
 	var alertsLink = document.getElementById("alerts_link");
 	if(validate_email(emailInput.value)){
	 	//window.open( 'http://www.verticalresponse.com', 'vr_optin_popup', 'scrollbars=yes,width=600,height=450' );
	 	alertsLink.focus(); 
	 	closePopUp(currently_open); 
	 	return true;
	 }
	 else{
	 	emailError.className = "error";
	 	emailError.innerHTML = "Please provide a valid email address";
	 	return false;
	 }
 }
 
 function onGroceryListSubmit(emailId, zipId, phoneId){
 	var emailInput = document.getElementById(emailId);
 	var zipInput = document.getElementById(zipId);
 	var hiddenPhone = document.getElementById("mobile_phone")
 	var phoneInput1 = document.getElementById(phoneId+"1");
 	var phoneInput2 = document.getElementById(phoneId+"2");
 	var phoneInput3 = document.getElementById(phoneId+"3");
 	var phoneNumber = phoneInput1.value+""+phoneInput2.value+""+phoneInput3.value;
 	var emailError = document.getElementById(emailId+"_error");
 	var zipError = document.getElementById(zipId+"_error");
 	var phoneError = document.getElementById(phoneId+"_error");
 	
 	var valid = true;
 	if(!validate_email(emailInput.value)){
 		valid = false;
 		emailError.innerHTML = "Please provide a valid email address";	
 	}
 	else{
 		emailError.innerHTML = "";
 	}
 	
 	if(!validate_zip(zipInput.value)){
 		valid = false;
 		zipError.innerHTML = "Please provide a valid zipcode";	
 	}
 	else{
 		zipError.innerHTML = "";
 	}
 	
 	if(!validate_phone(phoneNumber) && phoneNumber.length != 0){
 		valid = false;
 		phoneError.innerHTML = "Please provide a valid phone number";	
 	}
 	else{
 		phoneError.innerHTML = "";
 	}
 	
 	hiddenPhone.value = phoneNumber;
 	return valid;
 }
 
 function getStatesArray(){
 	var STATES = new Array(
		["AL","ALABAMA"],
		["AK","ALASKA"],
		["AZ","ARIZONA"],
		["AR","ARKANSAS"],
		["CA","CALIFORNIA"],
		["CO","COLORADO"],
		["CT","CONNECTICUT"],
		["DE","DELAWARE"],
		["DC","WASHINGTON DC"],
		["FL","FLORIDA"],
		["GA","GEORGIA"],
		["GU","GUAM"],
		["HI","HAWAII"],
		["ID","IDAHO"],
		["IL","ILLINOIS"],
		["IN","INDIANA"],
		["IA","IOWA"],
		["KS","KANSAS"],
		["KY","KENTUCKY"],
		["LA","LOUISIANA"],
		["ME","MAINE"],
		["MD","MARYLAND"],
		["MA","MASSACHUSETTS"],
		["MI","MICHIGAN"],
		["MN","MINNESOTA"],
		["MS","MISSISSIPPI"],
		["MO","MISSOURI"],
		["MT","MONTANA"],
		["NE","NEBRASKA"],
		["NV","NEVADA"],
		["NH","NEW HAMPSHIRE"],
		["NJ","NEW JERSEY"],
		["ME","NEW MEXICO"],
		["NY","NEW YORK"],
		["NC","NORTH CAROLINA"],
		["ND","NORTH DAKOTA"],
		["OH","OHIO"],
		["OK","OKLAHOMA"],
		["OR","OREGON"],
		["PA","PENNSYLVANIA"],
		["RI","RHODE ISLAND"],
		["SC","SOUTH CAROLINA"],
		["SD","SOUTH DAKOTA"],
		["TN","TENNESSEE"],
		["TX","TEXAS"],
		["UT","UTAH"],
		["VT","VERMONT"],
		["VA","VIRGINIA"],
		["WA","WASHINGTON"],
		["WV","WEST VIRGINIA"],
		["WI","WISCONSIN"],
		["WY","WYOMING"]);
		
		return STATES;
 }
 
 function validateZip(zipCode)
 {
 		var zReg = /^\d{5}$/;
 		var zipOK = (zipCode.length == 0 || zipCode.search(zReg) != -1);
 		if (!zipOK)
 		{
 			document.getElementById('popup_zip_error').style.display = "inline";
 		}
 		return zipOK;
 }
 
function updateTrees() 
{
	var initialDate = new Date(2007, 07, 22);
	var currentDate = new Date();
	var initialSavings = 1098;
	var savingsIncrement = 1; 
	var secElapsed;
	var totalSavings;
	var totalDeals;

	secElapsed = Math.round((currentDate - initialDate) / 7200000);
	totalSavings = Math.round(initialSavings + (savingsIncrement * secElapsed));

	document.getElementById("treeCounter").innerHTML = addCommas(totalSavings);

	setTimeout("updateTrees()",7200000);
} 


function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;

	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function swapBackground(ele, src){
 	ele.style.background = "url("+src+") no-repeat";
}

function validate_AddCard(merchantId, offerId)
{
	return true;
}

function removeChildElements(ele){
	if(!ele) return false;
	if(ele.hasChildNodes()){
		while(ele.childNodes.length >= 1){
			ele.removeChild(ele.firstChild);
		}
	}
	
	return ele;
}	

function xml_to_dom(xml){
	var xmlDoc;
	// Get rid of any linebreaks at beggining and end input
	var re = /(^(\r|\n){1,2})|((\r|\n){1,2}$)/g;
	xml = xml.replace(re,"");
	//var re = /(\r|\n){0,2}$/;
	//xml = xml.replace(re,"$1");
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(xml);
		xmlDoc = xmlDoc.lastChild;
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
	    {
	    	parser = new DOMParser();
	    	xmlDoc=parser.parseFromString(xml,"text/xml");
	    	xmlDoc = xmlDoc.firstChild;
	    }
	 	catch(e) {alert(e.message)}
	}
	
	return xmlDoc;
} 

function getAbsolutePosition(ele){
	if(!ele) return [0,0];
	var y = ele.offsetTop;
	var x = ele.offsetLeft;
	var parentPos = [0,0];
	if(ele.offsetParent)
		parentPos = getAbsolutePosition(ele.offsetParent);
	parentPos[0] += x;
	parentPos[1] += y;
	
	return parentPos;
}


/**
 * Cross Browser implementation for getting the dimensions for the viewable area.
 */
function getViewDimensions(){
	var docHeight = 0;
	var docWidth = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
	    //Non-IE
	    docHeight = window.innerHeight;
	    docWidth = window.innerWidth;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	    //IE 6+ in 'standards compliant mode'
	    docHeight = document.documentElement.clientHeight;
	    docWidth = document.documentElement.clientWidth;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    //IE 4 compatible
	    docHeight = document.body.clientHeight;
	    docWidth = document.body.clientWidth;
	  }
	
	return [docWidth, docHeight];
}

/******
 * Cross Browser implementation for getting the horizontal and vertical scroll amounts
 */
function getScrollOffset(){
	var scrollHeight = 0;
	var scrollWidth = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
	    //Netscape compliant
	    scrollHeight = window.pageYOffset;
	    scrollWidth = window.pageXOffset;
	  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    scrollHeight = document.body.scrollTop;
	    scrollWidth = document.body.scrollLeft;
	  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	    //IE6 standards compliant mode
	    scrollHeight = document.documentElement.scrollTop;
	    scrollWidth = document.documentElement.scrollLeft;
	  }
	  
	  return [scrollWidth, scrollHeight];
}

function makeSureTextFits(textId, containerId){
	var ihHeight = imageHolder.offsetHeight;
	var ihWidth = imageHolder.offsetWidth;
	// Have to make sure the text fits in the box, so make the font smaller till it fits.
	while(true){
		if(mercName.offsetHeight > ihHeight || mercName.offsetWidth > ihWidth){
			mercName.style.fontSize = (parseInt(mercName.style.fontSize)-1)+"px";
		}
		else{
			// Vertically Center the text
			var excess = ihHeight-mercName.offsetHeight;
			mercPad.style.height = (excess/2)-1+"px";
			break;
		}
	}
}

function makeSureImageFits(imageId){
	var image = document.getElementById(imageId);
	var parent = image.parentNode;
	var aspect = image.naturalWidth/image.naturalHeight;
	if(image.naturalHeight > parent.offsetHeight ||
		image.naturalWidth > parent.offsetWidth){
		if(image.naturalHeight/parent.offsetHeight > image.naturalWidth/parent.offsetWidth){
			image.style.height = parent.offsetHeight+"px";
			image.style.width = parent.offsetHeight*aspect+"px";
		}
		else{
			image.style.width = parent.offsetWidth+"px";
			image.style.height = parent.offsetWidth*(1/aspect)+"px";			
		}
	}
}

function getFormattedDate(date, style1, style2, pretext){
	if(!style1) style1="";
	if(!style2) style2="";
	if(!pretext) pretext = "";
	
	var now = new Date();
	var then = new Date();
	var now_ms = now.getTime();
	var then_ms = Date.parse(date);
	then.setTime(then_ms);
	
	var finalString = "";
	var gap = (then_ms-now_ms)/1000/60/60/24; // Days
	if(gap < 1 && (now.getDate()===then.getDate()))
		finalString = "<span class='"+style2+"'>"+pretext+" today!</span>";
	else if(gap < 1)
		finalString = "<span class='"+style2+"'>"+pretext+" tomorrow!</span>";	
	else if(gap < 6)
		finalString = "<span class='"+style1+"'>"+pretext+" "+date+"</span> <span class='"+style2+"'>(in "+(Math.ceil(gap))+" days)</span>";
	else if(gap <= 7)
		finalString = "<span class='"+style1+"'>"+pretext+" "+date+"</span> <span class='"+style2+"'>(in 1 week)</span>";
	else
		finalString = pretext+" "+date
		
	return finalString;
}

function swapHeadHome(name)
{
	var headImage = document.getElementById("headHome");
	var headCard = document.getElementById("headCard");
	var vis = "none";
	if (name == 'groc')
	{
		vis = "block";
	}	
	if (headImage && headCard)
	{
		headImage.src = "/images/home/groc_mob_" + name + ".jpg";
		headCard.style.display = vis;
	}
}	

function setHeadCardImage()
{
	var headCard = document.getElementById("headCard");
	var headImage = document.getElementById("headHome");
	if (headCard && headImage)
	{
		alert(getXOffset(headImage));
		var xOff = getXOffset(headImage) + 465;
		var yOff = getYOffset(headImage) + 76;
		headCard.style.left = xOff + "px";
		headCard.style.top = yOff + "px";
	}
}

function getXOffset(el)
{
	var currX = el.offsetLeft;
	if (el.offsetParent)
	{
		currX += getXOffset(el.offsetParent);
	}
	return currX;
}

function getYOffset(el)
{
	var currY = el.offsetTop;
	if (el.offsetParent)
	{
		currY += getYOffset(el.offsetParent);
	}
	return currY;
}

function customPageTracker(customPageName)
{
	if (pageTracker)
	{
		pageTracker._trackPageview(customPageName);
	}
}	


function restoreEmulatedDisabled(selectBox) 
{
	if (selectBox.options[selectBox.selectedIndex].disabled)
	{
		while (selectBox.options[selectBox.selectedIndex].disabled && selectBox.selectedIndex < selectBox.options.length)
		{
			selectBox.selectedIndex++;
		}	
	}
}

function replaceButton(elId)
{
	var buttonHolder = document.getElementById(elId);
	if (buttonHolder)
	{
		removeChildElements(buttonHolder);
		var loader_img = document.createElement("img");
		loader_img.src="/includes/templates/master/images/loader.gif";
		buttonHolder.appendChild(loader_img);
	}
}	

	

	