/**
 * @copyright    2009 Delivery.com JJ
 * @fileOverview search.js
 * @description  Logged in home page
 *
 * jslint white: true, browser: true, undef: true, devel: true, on: true, onevar: true, undef: true, nomen: true,
 *  eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: true
 */
//"use strict"; //May break future javascript

function jsearchIconPop(popId) {
	var lilPop = document.getElementById(popId);
	if (lilPop.style.display === 'block' || lilPop.style.visibility === 'visible') {
		lilPop.style.visibility = 'hidden';
		lilPop.style.display = 'none';
		if(lilPop.parentNode.style.display === 'block' || lilPop.parentNode.style.visibility === 'visible'){
			lilPop.parentNode.style.visibility = 'hidden';
			lilPop.parentNode.style.display = 'none';
		}
	} else {
		lilPop.style.visibility = 'visible';
		lilPop.style.display = 'block';
		lilPop.parentNode.style.visibility = 'visible';
		lilPop.parentNode.style.display = 'block';
		document.getElementById(popId + '_pt').focus();
	}
}

function jsearchIconHide() {
	var thisDiv, allDivs = document.getElementsByTagName('div');
	for (var i = 0; i < allDivs.length; i++) {
		thisDiv = allDivs[i];
		if (thisDiv.className === 'icon_pop_box') {
			thisDiv.style.visibility = 'hidden';
			thisDiv.style.display = 'none';
		}
	}
}

function setResponseText(rid, text) {
	responseNode = document.getElementById("response_"+rid);
	responseNode.innerHTML = text;
}

/**
 * @function jsearchNoteButtonHandler
 * @param    response
 * @param    request
 * @param    niId
 * @param    popId
 */
function jsearchNoteButtonHandler(response, request, nitId, popId) {	
	document.getElementById(nitId).innerHTML = response === 'on' ? 'EDIT NOTE' : 'ADD NOTE';

	jsearchIconPop(popId);
	document.body.style.cursor = 'default';
}

/**
 * @function jsearchNoteButtonSubmit
 * @param    ptId
 * @param    nitId
 * @param    popId
 * @param    restaurantId
 *
 * @requires jsearchNoteButtonHandler
 */
function jsearchNoteButtonSubmit(ptId, nitId, popId, restaurantId) {
	var ptext = document.getElementById(ptId),
	request_url = window.location.pathname + '?ajax_setnote=yes&for_rid=' + restaurantId + '&icon_id=' + nitId + '&note=' + ptext.value;

	document.body.style.cursor = 'wait';
	ajax_request(jsearchNoteButtonHandler, request_url, nitId, popId);
}

/**
 * @function jsearchFavButtonHandler
 * @param    response
 * @param    request
 * @param    fiId
 */
function jsearchFavButtonHandler(response, request, fiId) {
	var cname = document.getElementById(fiId).className;
	if (cname.substring(cname.length - 1) === 'r') {
		document.getElementById(fiId).className = response === 'on' ? 'favorite_icon_onr' : 'favorite_icon_offr';
	} else {
		document.getElementById(fiId).className = response === 'on' ? 'favorite_icon_on' : 'favorite_icon_off';
	}
	document.getElementById(fiId).title = response === 'on' ? 'Remove from Favorites' : 'Add to Favorites';
	document.body.style.cursor = 'default';
	document.getElementById(fiId).style.cursor = 'default';
	
	var rid = fiId.replace('f_', "");
	rid = rid.replace('_icon', "");
	//setResponseText(rid, response === 'on' ? 'Added to Favorites' : 'Removed from Favorites');
	document.getElementById("fav_"+rid).innerHTML = response === 'on' ? 'Remove Favorite' : 'Add Favorite';
	//alert(response);
	//document.getElementById("response_"+rid).style.display = "block";
}

/**
 * @function jsearchFavButtonSubmit
 * @param    fiId
 * @param    restaurantId
 * @param    postPopulateCacheKeys
 *
 * @requires jsearchFavButtonHandler
 */
function jsearchFavButtonSubmit(fiId, restaurantId, postPopulateCacheKeys) {
 	document.body.style.cursor = 'wait';
	document.getElementById(fiId).style.cursor = 'wait';

    var request_url = window.location.pathname + '?ajax_setfav=yes&for_rid=' + restaurantId + '&icon_id=' + fiId;
    ajax_request(jsearchFavButtonHandler, request_url, fiId);
}

/**
 * @function jsearchShowMoreHandler
 * @param    response Required by AJAX. May be unused
 * @param    request  Required by AJAX. May be unused
 */
function jsearchShowMoreHandler(response, request) {
	if(response.indexOf('{') == 0){
		var jsResult = jQuery.parseJSON(response);
		$("#results").html(jsResult.content);
	} else {
		$("#results").html("Error loading results");
	}
	
	//change back cursor and scroll up
	document.body.style.cursor = '';
	$(".pagination a").css({cursor:""});
	$('body,html').scrollTop(0);	
}

/**
 * @function jsearchShowMoreSubmit
 * @param    ajax_filter_args
 *
 * @requires jsearchShowMoreHandler
 */
function jsearchShowMoreSubmit(ajax_filter_args) {
	document.body.style.cursor = 'wait';
	 $(".pagination a").css({cursor:"wait"});
	 //jHash('jsearchShowMoreSubmit', ajax_filter_args);
	 ajax_request(jsearchShowMoreHandler, ajax_filter_args);
}

function confirmCartReset(rest_id, rest_name, cart_rest_name, cart_rest_id, target_url) {
	modal_text = '<h2 style="margin-top:0px;">Changing Merchant</h2>';
	modal_text += '<p>You already have items in your cart from '+cart_rest_name+'.<br />';
	modal_text += 'Visiting another merchant\'s menu page will clear your cart.</p>';
	modal_text += 'Would you like to continue?<br /><br />';
	modal_text += '<div class="button" style="margin-right:8px;"><a href="#" onclick="sModal_close(); window.location = \''+target_url+'\'; return false;">Yes</a></div><div class="button"><a href="#" onclick="sModal_close(); return false;">No</a></div>';
	
	sModal_close();
	
	sModal.create();
	sModal.populate(modal_text, 6);
}


//TODO: maybe we should move reviews function to entity js or catalog js -SK
function show_all_reviews(rid,menu_url,params){
	document.body.style.cursor = 'wait';
	current_rest_id = rid;
	var request_url = '/catalog.php?ajax_submit=1&show_all_reviews=1&vendor_selection='+rid+'&'+params;
    ajax_request(show_all_reviews_handler, request_url, false);
}
function show_all_reviews_modal(rid,menu_url,params){
	document.body.style.cursor = 'wait';
	current_rest_id = rid;
	var request_url = '/catalog.php?ajax_submit=1&show_all_reviews=1&vendor_selection='+rid+'&'+params;
    ajax_request(show_all_reviews_handler, request_url, true);
}
function show_all_reviews_handler(response,request,show_modal){
	var jsResult = jQuery.parseJSON(response);	
	if(show_modal == true) {
		$("#sModal_popup:visible").length > 0 ? sModal.close() : null;
		sModal.create();
		sModal.populate(jsResult.content);
	}
	else {
		$(".merchant_page_content_review").html(jsResult.content);
		window.scrollTo(0,0);
	}
	document.body.style.cursor = 'auto';
}

var more_results_href='';

function show_more_reviews(offset,ajax_encrypted){
	document.body.style.cursor = 'wait';
	if(more_results_href != ''){
		request_url = more_results_href;
	}
	else{
		request_url = ajax_encrypted;
	}
	ajax_request(reviews_response_handler, request_url);
}

function reviews_response_handler(response, request){
	var jsResult = jQuery.parseJSON(response);
	current_reviews = document.getElementById('merchant_reviews');
	newDiv = document.createElement("div");
	newDiv.style.margin = "0px";
	newDiv.style.padding = "0px;";
	newDiv.innerHTML = jsResult.content;
	current_reviews.insertBefore(newDiv, document.getElementById('show_more_reviews'));
	more_results_href = jsResult.more_results_href;
	if(jsResult.no_more_results){
		document.getElementById('show_more_reviews').removeChild(document.getElementById('more_reviews_anchor'));
	}
	document.body.style.cursor = 'default';
}

function show_reviewed_merchants(reviewer_id,follow){
	document.body.style.cursor = 'wait';
	var request_url = '/catalog.php?reviewer_id='+reviewer_id+'&ajax_submit=1';
	if(follow == 1 || follow == -1){
		request_url += '&follow='+follow;
	}
    ajax_request(show_reviewed_merchants_handler, request_url);
}

function show_reviewed_merchants_handler(response,request){
	$("#sModal_popup:visible").length > 0 ? sModal.close() : null;
	sModal.create();
	
	var jsResult = jQuery.parseJSON(response);
	
	sModal.populate(jsResult.content,10);
	document.body.style.cursor = 'default';
}

function follow_reviewer(reviewer_id,follow,mfid){
	document.body.style.cursor = 'wait';
	var request_url = '/catalog.php?reviewer_id='+reviewer_id+'&ajax_submit=1';
	request_url += '&follow='+follow+'&no_response=1';
    ajax_request(follow_reviewer_handler, request_url, reviewer_id, mfid);
}

function follow_reviewer_handler(response,request,reviewer_id,mfid){
	response = jQuery.parseJSON(response);
	responseContainer = document.getElementById('follow_'+mfid);
	for(var i=0; i<responseContainer.childNodes.length; i++){
		current_element = responseContainer.childNodes.item(i);
		if(typeof(current_element.className) !== 'undefined' && current_element.className.indexOf('response_text') > -1){
			current_element.innerHTML = response.response_text;
		}
		if(typeof(current_element.className) !== 'undefined' && current_element.className.indexOf('follow_text') > -1){
			current_href = current_element.getElementsByTagName('a').item(0).href;
			if(current_href.indexOf('follow=-1') > -1){
				current_href = current_href.replace('follow=-1','follow=1');
			} else {
				current_href = current_href.replace('follow=1','follow=-1');
			}
			current_element.innerHTML = '<a href="'+current_href+'" onclick="follow_reviewer('+reviewer_id+','+response.new_follow_param+','+mfid+'); return false;">'+response.follow_text+'</a>';
		}
	}
	document.body.style.cursor = 'default';
}

function reload_search_page() {
	document.body.style.cursor = 'wait';
	$.post("/search.php", {'ajax_submit':'1'}, function(data) {
		result=jQuery.parseJSON(data);
		$("#results").html(result.content);
		document.body.style.cursor = '';
	})
}

function RDSShowHelp(thisObj, ourId) {
	RDSHideHelp();
	var newLeft,
		newTop,
		ourRDS = document.getElementById(ourId);
	ourRDS.style.visibility = 'visible';
}

function RDSHideHelp() {
	var i,
		newLeft,
		newTop,
		thisSpan,
		allSpans = document.getElementsByTagName('span');

	for (i = 0; i < allSpans.length; i++) {
		thisSpan = allSpans[i];
		if (thisSpan.className === 'rds_tool_tips') {
			thisSpan.style.visibility = 'hidden';
		}
	}
}

$(document).ready(function() {

	var delivery_location = '/images/landing_page/HP_radio_button_delivery.png';
	var pickup_location = '/images/landing_page/HP_radio_button_pickup.png';

	/*preload images*/
	var image1 = $('<img />').attr('src', delivery_location);
	var image2 = $('<img />').attr('src', pickup_location);

	$('#d_type_delivery').click(function() {
		$('#delivery_type').css('background', 'url('+delivery_location+') 0 0 no-repeat');
		$('#ship_val').val('DELIVERY');
		
		$('div.delivery_pickup_text_sprite').addClass('delivery');
		$('div.delivery_pickup_text_sprite').removeClass('pickup');
	});

	$('#d_type_pickup').click(function() {
		$('#delivery_type').css('background', 'url('+pickup_location+') 0 0 no-repeat');
		$('#ship_val').val('PICKUP');
		
		$('div.delivery_pickup_text_sprite').addClass('pickup');
		$('div.delivery_pickup_text_sprite').removeClass('delivery');
	});

});
