var PAGE = "page";
var STORE = "store";
var CATEGORY = "category";
var KEYWORDS = "q";
var TAB = "tab";
var SHOW_ALL_STORES = "showAllStores";
var SHOW_STORES = "showstores";
var popular = "TOP_7DAYS";
var recent = "NEWEST";
var military = "MILITARY";
var staffpics = "STAFF_PICKS";
var pageName = "";

function displayVoted(el, dealId) {
	var deal=document.getElementById('votes-' + dealId);	
	deal.innerHTML=parseInt(deal.innerHTML)+1; 
	el.style.display = 'none'; 
	var vote=document.getElementById('voted-' + dealId);
	vote.style.display='block';
	return true;
}

//logic for update parameters in anchor
var currentAnchor = null;
var changedAnchor = null;
var firstStep = true;

function replaceQueryString(url,param,value) {
	var re = new RegExp("([?|&])" + param + "=.*?(&|$)","i");
    if (url.match(re)) {
    	if("" == value || " " == value) {
    		var results = re.exec(url);
    		var firstChar = "";

    		if(null != results) {
				if("?" == results[1] && "&" == results[2])
					firstChar = "?";
	    		}
	    		if("&" == results[1] && "&" == results[2]) {
	    			firstChar = "&";
	    		}
	
	    		return url.replace(re, firstChar);

    	} else {
        	return url.replace(re,'$1' + param + "=" + value + '$2');
        }
    } else {
    	if (url.indexOf("?") == -1) {
	    	if("" == value || " " == value) {
	    		return url.replace(re,'');
	    	} else {
	        	return url + '?' + param + "=" + value;
	        }

    	} else {
	    	if("" == value || " " == value) {
	    		return url.replace(re,'');
	    	} else {
	        	return url + '&' + param + "=" + value;
	        }
        }
    }
}

function reorderQueryString(url) {
	var str = url.split("?");
	var newQueryData = new Array();
	if (null != str && str.length > 1) {
		var queryString = str[1];
		var parameterValuePairs = queryString.split("&");
		if (null != parameterValuePairs) {
			for (i = 0; i < parameterValuePairs.length; i++) {
				var pv = parameterValuePairs[i].split("=");
				if (null != pv && pv.length > 1) {
					newQueryData[pv[0]] = parameterValuePairs[i];
				}
			}
		}
	}
	var query = newQueryData[KEYWORDS];
	var hasQuery = null != query && "" != query;
	var page = newQueryData[PAGE];
	var hasPage = null != page && "" != page;
	var tab = newQueryData[TAB];
	var hasTab = null != tab && "" != tab;
	var showAllStores = newQueryData[SHOW_ALL_STORES];
	var hasShowAllStores = null != showAllStores && "" != showAllStores;

	var result = str[0] + "?" + (hasQuery ? query : "");
	result += (hasTab ? tab : "");
	result += (hasShowAllStores ? (hasQuery || hasTab ? "&" : "") + showAllStores : "");
	result += (hasPage ? (hasQuery || hasTab || hasShowAllStores ? "&" : "") + page : "");

	return result;
}

function getValue(name) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[?|&]"+name+"=([^&]*)");
  var results = regex.exec(window.location.href);
  if( results == null )
    return "";
  else
    return results[1];
}

function getOldValue(name) {
	  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	  var regex = new RegExp("[?|&]"+name+"=([^&]*)");
	  var results = regex.exec(currentAnchor);
	  if( results == null )
	    return "";
	  else
	    return results[1];
	}


function setValueById(id, value) {
    document.getElementById(id).value = value;
}

function paginateRight(e) {
	Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});
}

function paginateLeft(e) {
	Event.fire(this, 'rich:datascroller:onscroll', {'page': 'previous'});
}

function searchAction(elem1, elem2) {
	if (!gotoDealsHome()) return;
	if (null != elem1) {
		return elem1.click();
	}
	if (null != elem2) {
		return elem2.click();
	}
}

var currentStoreImage = null;

function setStoreSuggestionInputValue(items) {
	currentStoreImage = items[0].imageUrl;
	document.getElementById("dealsSubmitForm:merchantImageUrl").src = items[0].imageUrl;
}

function checkStoresImage(inputField, storeName, defaultImage) {
	if(inputField.value == "" || inputField.value != storeName) {
		var img = document.getElementById("dealsSubmitForm:merchantImageUrl");
		img.src = defaultImage;
		setStoreSuggestionInputValue(defaultImage);
	}
}

function gotoDealsHome() {
	var input = document.getElementById("search-form:inputSearch");
	if (null != input && "" == input.value) {
		window.location = dcContextPath;
		return false;
	}
	return true;
}

function showResults() {
	if(null != document.getElementById("category-map:deals-header")) {
		document.getElementById("category-map:deals-header").style.display = "block";
	}
	if(null != document.getElementById("deals-footer")) {
		document.getElementById("deals-footer").style.display = "block";
	}
	if(null != document.getElementById("search-results-header")) {
		document.getElementById("search-results-header").style.display = "block";
		document.getElementById("search-results-header-loading").style.display = "none";
	}
	if(null != document.getElementById("search-deals-form:search-results")) {
		document.getElementById("search-deals-form:search-results").style.display = "block";
	}
}

function firstLoad() {
	if(null != document.getElementById("category-map:deals-header")) {
		document.getElementById("category-map:deals-header").style.display = "block";
	}
	if(null != document.getElementById("search-results-header")) {
		document.getElementById("search-results-header").style.display = "none";
		document.getElementById("search-results-header-loading").style.display = "block";
	}
	if(null != document.getElementById("search-deals-form:search-results")) {
		document.getElementById("search-deals-form:search-results").style.display = "none";
	}
}

function otherLoad() {
	if(null != document.getElementById("category-map:deals-header")) {
		document.getElementById("category-map:deals-header").style.display = "none";
	}
	if(null != document.getElementById("deals-footer")) {
		document.getElementById("deals-footer").style.display = "none";
	}
}

function setKeywords(keywords) {
	var inputField = document.getElementById("search-form:inputSearch");
	if('' != keywords && null != inputField) {
		inputField.value = keywords;
	}
}

function encodeDealsURI(value) {	
	value = encodeURI(value);
	value = value.replace(/\++/g,"%2B");
	value = value.replace(/\$+/g,"%24");
	value = value.replace(/\#+/g,"%23");
	value = value.replace(/\"+/g,"%22");
	return value = value.replace(/\%20+/g,"+");
}

function decodeDealsURI(queryString) {
	queryString = queryString.replace(/\%22+/g,"\"");
	queryString = queryString.replace(/\%24+/g,"$");
	queryString = queryString.replace(/\%26+/g,"&");
	queryString = queryString.replace(/\%23+/g,"#");
	queryString = queryString.replace(/\++/g," ");
	queryString = queryString.replace(/\%2B+/g,"+");
	return queryString = decodeURI(queryString);
}

var activePage = parseInt(getValue("page"), 10);
if (activePage == "" || isNaN(activePage)) {
	activePage=1;
}

if (typeof(Event) != "undefined") {
	Event._fire = Event.fire;
	Event.fire = function() {
		var result = true;
		if (arguments[1] == "rich:datascroller:onscroll") {
			var value = arguments[2].page;
			var newquery = window.location.href;
			if (value == "previous") {
				newquery = replaceQueryString(newquery, "page", activePage-1);
				activePage = activePage-1;
			} else if (value == "next") {
				newquery = replaceQueryString(newquery, "page", activePage+1);
				activePage = activePage+1;
			} else {
				newquery = replaceQueryString(newquery, "page", value);
				activePage = parseInt(value, 10);
			} 	    				
			newquery = reorderQueryString(newquery);
			window.location.href = newquery;
			result = true;
		} else {
			result = Event._fire.apply(this, arguments);
		}
		return result;
	}
}

function searchWithRedirect(keywords) {
	var newquery = dcContextPath + "search";
	keywords = encodeDealsURI(keywords);
	keywords = keywords.replace(/\&amp;/g,"%26");
	keywords = keywords.replace(/\&+/g,"%26");	
	newquery = replaceQueryString(newquery, "q", keywords);
	newquery = replaceQueryString(newquery, "page", 1);
	newquery = reorderQueryString(newquery);
	window.location.href = newquery;
	return false;
}

function mceKeyUp(e) {
	var expireDate = jQuery('#dealsSubmitForm\\:expirationDateText').text();
	var expireDateText = "<span class='expiration'> Expiration: " + expireDate + "</span>";
	var descriptionText = jQuery('#dealsSubmitForm\\:descriptionTextArea_ifr').contents().find('#tinymce').text();
	var descriptionHtml = jQuery('#dealsSubmitForm\\:descriptionTextArea_ifr').contents().find('#tinymce').html();
	var regexp = jQuery.browser.mozilla ? "<br(.*)</p>$" : "</p>$";
	if('' != expireDate) {
		descriptionHtml = descriptionHtml.replace(new RegExp(regexp, "i"), expireDateText + "</p>");
	}
	if('' == descriptionText) {
		jQuery('#dealDescriptionBlock').html("<p>Description field is empty" + ("" == expireDate ? "" : expireDateText + "</p>"));
	} else {
		jQuery('#dealDescriptionBlock').html(descriptionHtml);
	}
	jQuery('#dealsSubmitForm\\:deal-description-error').html('');
	jQuery('#dealsSubmitForm\\:deal-description-title').removeClass('error-required');
}

function makePaste(ed, event) {	
	ed.execCommand("mcePasteWord", true);
    ed.execCommand("mceAddUndoLevel");
    return tinymce.dom.Event.cancel(event);
} 


function fixDataScrollerSeparator() {
	var page = getValue(PAGE);
	page = parseInt(page,10);
	if (isNaN(page) || page < 1) {
		page = 1;
	}
	if(page == 1) {
		jQuery('.rich-datascr-act').css('border-left','none');
	}
}
