// JavaScript Document
var DirComp = {};

DirComp.homepage = 'http://www.directcomplaint.com/';

DirComp.init = function() {

	$(".questiontypefld").change(function(event) {
		DirComp.displayTypeOptions();
	});
	
	$(".changerecaddress").click(function(event) {
		event.preventDefault();
		var conf = confirm("Would you like to continue?\nThis will clear this recipient's address and\nyou will be asked to choose or enter a new one.");
		if(!conf) {
			return;	
		}
		openNewWindow(this);
	});
	
	$(".questiontypefld").click(function(event) {
		DirComp.displayTypeOptions();
	});
	
	if($(".datepickerfld").length > 0) {
		//var origdate = $(".datepickerfld:eq(0)", $(targetdiv)).val();
		$(".datepickerfld").datepicker({
			dateFormat : 'yy-mm-dd'
		});
		//$(".datepickerfld:eq(0)", $(targetdiv)).val(origdate);
	}
	
	$(".pbstatusbtn").click(function(event) {
		var status = $(this).metadata().status;
		var id = $(this).metadata().id;
		var conf = confirm("Are you sure YOU would like to set this review's status to " + status + "?");
		if(!conf) {
			return false;	
		}
		var url = DirComp.homepage + 'request/setpbstatus.php?id=' + id + '&status=' + status;
		GabeUtil.ajaxRequest('get', url, {
			onOK : function(response) {
				window.location.reload(true);	
			}					 
		}, 'json');
	});
	
	// commented this because it's already loaded in regQuestionDivs
	/*
	jQuery.each($(".adddropdownanswer"), function(i, val) {
		$(val).click(function(event) {
			DirComp.addDropdownAnswer(val);
		});
	});
	*/
	
	$(".numericfield").keyup(function(event) {
		$(this).val($(this).val().replace(/[^0-9]/i, ""));
	});
	
	DirComp.regRemoveOptionText();
}

DirComp.regNotesDiv = function(div, relid, category) {
	
	var html = "<input type='button' value='Add a new note' class='addnotesbtn' />";
	html += "<form method='post' id='addnotesform' action='request/addnotes.php' style='display:none;border:#CCCCCC 2px solid;padding:5px;'><input type='hidden' name='relid' value='" + relid + "' /><input type='hidden' name='category' value='" + category + "' />Add a new note:<br /><textarea name='content' style='width:500px;height:100px'></textarea><br /><input type='submit' name='submitbutton' value='Submit' /></form><form method='post' action='request/getnotes.php' id='getnotesform'><input type='hidden' name='relid' value='" + relid + "' /><input type='hidden' name='category' value='" + category + "' /><input type='hidden' name='fromadmin' value='1' /></form><div id='getnotesresult'></div>";
	
	$(div).html(html);
	
	$(".addnotesbtn").click(function(event) {
		$(this).next().toggle();
	});
	
	var getnotes;
	
	GabeUtil.ajaxFormJson('#addnotesform', {
		success : function(response) {
			alert(response.message);
			if(response.status == 'OK') {
				$(".addnotesbtn").next().hide();
				getnotes();
			}
		}
	});
	
	getnotes = GabeUtil.registerActiveSearchForm('getnotesform', 'getnotesresult', { successCallback : function(response) {
		$(".viewnoteslink", $(div)).click(function(event) {
			$(this).next().toggle();										   
		});
	}});
	getnotes();
	
}
DirComp.searchGoogleLocal = function(option, searchstr, city, state, zipcode) {
	
	if(!city) {
		city = '';
	}
	if(!state) {
		state = '';
	}
	if(!zipcode) {
		zipcode = '';
	}
	searchstr = encodeURIComponent(searchstr);
	city = encodeURIComponent(city);
	state = encodeURIComponent(state);
	zipcode = encodeURIComponent(zipcode);
	var query = new Array();
	query.push(searchstr);
	query.push(city);
	query.push(state);
	query.push(zipcode);
	
	var url = DirComp.homepage + 'request/searchgooglelocal.php?query=' + query.join(' ');
	// alert(url);
	GabeUtil.ajaxRequest('get', url, option);
	
}

DirComp.regCompStatusBtns = function(parent) {
	if(!parent) {
		parent = document.body;	
	}
	jQuery.each($(".formstatusfldbtn", $(parent)), function(i, val) {
		DirComp.regCompStatusBtn(val);
	});
}

DirComp.regCompStatusBtn = function(btn) {
	$(btn).click(function(event) {
		var conf = confirm("Would you like to continue?");
		if(!conf) {
			return false;
		}
		var thisbutton = this;
		var entryid = $(this).metadata().entryid;
		var type = $("#formstatusfld" + entryid).metadata().type;
		var status = $("#formstatusfld" + entryid).val();
		var url = DirComp.homepage + 'request/setcompstatus.php?type=' + type + '&entryid=' + entryid + '&status=' + status;
		 
		var opt = {};
		opt.onLoad = function(response) {
			$(thisbutton).attr('disabled', false);
		}
		$(thisbutton).attr('disabled', true);
		GabeUtil.ajaxRequest('get', url, opt, 'json');
	});
}

DirComp.regCompRemedyReceivedBtns = function(parent) {
	if(!parent) {
		parent = document.body;	
	}
	jQuery.each($(".remedyreceivedbtn", $(parent)), function(i, val) {
		DirComp.regCompRemedyReceivedBtn(val);
	});
}

DirComp.regCompRemedyReceivedBtn = function(btn) {
	
	$(btn).click(function(event) {
		var conf = confirm("Would you like to set the remedy received for this complaint?");
		if(!conf) {
			return false;
		}
		var thisbutton = this;
		var field = $(this).prev();
		var entryid = $(field).metadata().entryid;
		var type = $(field).metadata().type;
		var remedyreceived = encodeURIComponent($(field).val());
		var url = DirComp.homepage + 'request/setcompremedyreceived.php?type=' + type + '&entryid=' + entryid + '&remedyreceived=' + remedyreceived;
		 
		var opt = {};
		opt.onOK = function(response) {
			if(response.data) {
				// set date
				$("#remedyreceiveddate" + entryid).html(response.data);
			}
			$(thisbutton).attr('disabled', false);
		}
		opt.onLoad = function(response) {
			$(thisbutton).attr('disabled', false);
		}
		$(thisbutton).attr('disabled', true);
		GabeUtil.ajaxRequest('get', url, opt, 'json');
	});	
	
}

DirComp.displayTypeOptions = function(opt) {
	if(!opt) {
		opt = {};	
	}
	jQuery.each($(".questiontypefld"), function(i, val) {
		var type = $(val).val();
		$(".typeoptiondiv", $(val).closest("td")).hide();
		$(".typeoptiondiv" + type, $(val).closest("td")).show();
		if(type == '2') {
			// dropdown. if no option, add an option
			if($(".typeoptiondiv" + type + " .questionoptiontextdiv", $(val).closest("td")).length == 0) {
				DirComp.addDropdownAnswer($(".adddropdownanswer", $(val).closest("td")));
			}
		}
	});
}

DirComp.addDropdownAnswer = function(elem) {
	$(elem).before("<div class='questionoptiontextdiv'><input type='text' class=\"questionoptiontext {id:'na'}\" value='' size='60' /><input value='Remove' class='removeoptiontext' type='button' /></div>");
	DirComp.regRemoveOptionText();
}

DirComp.regRemoveOptionText = function(opt) {
	if(!opt) {
		opt = {};	
	}
	$(".removeoptiontext").click(function(event) {
		$(this).closest('.questionoptiontextdiv').remove();
	});	
}

DirComp.compileDropdownAnswers = function(elem) {
	var aoptions = new Array();
	var aoids = new Array();
	jQuery.each($(".questionoptiontext", $(elem).closest('div.typeoptiondiv')), function(i, val) {
		var aoid = $(val).metadata().id;
		if($(val).val() != '') {
			// alert($(val).metadata().id);
			aoptions.push($(val).val());
			aoids.push($(val).metadata().id);
		}
	});
	$(elem).val(aoptions.join('||'));
	$(".questionoptionids",$(elem).closest("tr")).val(aoids.join('||'));
}

DirComp.addNewQuestion = function(elem) {
	var html = $("#addcformquestiontmp").html();
	var newid = 'addcformquestiondiv' + (new Date()).getTime() + '' + Math.round((Math.random() * 100));
	if(html.indexOf('"addcformquestiondiv"')) {
		html = html.replace(/"addcformquestiondiv"/, "'addcformquestiondiv' id='" + newid + "'");
	} else {
		html = html.replace(/'addcformquestiondiv'/, "'addcformquestiondiv' id='" + newid + "'");
	}
	$(elem).closest(".addcformquestiondiv").after(html);
	DirComp.regQuestionDiv($("#" + newid));
}

DirComp.regQuestionDiv = function(div) {
	$(".questiontypefld", $(div)).click(function(event) {
		DirComp.displayTypeOptions();
	});
	$(".adddropdownanswer", $(div)).click(function(event) {
		DirComp.addDropdownAnswer(this);
	});
	$(".addquestionbtn", $(div)).click(function(event) {
		DirComp.addNewQuestion(this);
	});
	DirComp.regQuestionOrderDiv($(".questionorderdiv", $(div)));
	DirComp.regRemoveOptionText();
	$(".removequestionbtn", $(div)).click(function(event) {
		var conf = confirm("Would you like to continue?");								   
		if(conf) {
			$(div).remove();
		}
	});
}

DirComp.regQuestionDivs = function(parent) {
	if(!parent) {
		parent = document.body;	
	}
	jQuery.each($(".addcformquestiondiv", $(parent)), function(i, val) {
		DirComp.regQuestionDiv(val);
	});		
}

DirComp.regQuestionOrderDiv = function(div) {
	$(".movequestionup", $(div)).click(function(event) {
		// alert($(this).closest('.addcformquestiondiv').prev().html());
		if($(this).closest('.addcformquestiondiv').prev().hasClass('addcformquestiondiv')) {
			$(this).closest('.addcformquestiondiv').prev().before($(this).closest('.addcformquestiondiv'));
		}
	});	
	$(".movequestiondown", $(div)).click(function(event) {
		if($(this).closest('.addcformquestiondiv').next().hasClass('addcformquestiondiv')) {
			$(this).closest('.addcformquestiondiv').next().after($(this).closest('.addcformquestiondiv'));
		}
	});	
}

DirComp.getConsComplaintInfo = function(elem, opt) {
	if(!opt) {
		opt = {};	
	}
	if(!opt.orderconfdate) {
		opt.orderconfdate = Math.random();
	}
	var orderconf = $(elem).val();
	var url = GabeUtil.homepageUrl + 'request/getccompinfo.php?orderconf=' + orderconf + '&ts=' + Math.random() + '&orderconfdate=' + opt.orderconfdate;
	var getopt = {};
	getopt.onLoad = function(response) {
		$("#conscomplaintinfo").html(response);
		if($("#conscomplaintinfo .datepickerfld").length > 0) {
			//var origdate = $(".datepickerfld:eq(0)", $(targetdiv)).val();
			$(".datepickerfld").datepicker({
				dateFormat : 'yy-mm-dd'
			});
			//$(".datepickerfld:eq(0)", $(targetdiv)).val(origdate);
		}
		if(document.getElementById('conscompreplyform')) {
			GabeUtil.ajaxFormJson("#conscompreplyform", {
				success : function(response) {
					if(response.status == 'OK') {
						$("#content-wrapper").html(GabeUtil.htmlDecode(response.message));
					} else {
						alert(response.message);	
					}	
				}					  
			});
		}
	}
	$("#conscomplaintinfo").html("<center>Please wait while we verify the complaint confirmation code.</center>");
	GabeUtil.ajaxRequest('get', url, getopt);
}

DirComp.getGovComplaintInfo = function(elem, opt) {
	if(!opt) {
		opt = {};	
	}
	if(!opt.orderconfdate) {
		opt.orderconfdate = Math.random();
	}
	var orderconf = $(elem).val();
	var url = GabeUtil.homepageUrl + 'request/getgcompinfo.php?orderconf=' + orderconf + '&ts=' + Math.random() + '&orderconfdate=' + opt.orderconfdate;
	var getopt = {};
	getopt.onLoad = function(response) {
		$("#conscomplaintinfo").html(response);
		if($("#conscomplaintinfo .datepickerfld").length > 0) {
			//var origdate = $(".datepickerfld:eq(0)", $(targetdiv)).val();
			$(".datepickerfld").datepicker({
				dateFormat : 'yy-mm-dd'
			});
			//$(".datepickerfld:eq(0)", $(targetdiv)).val(origdate);
		}
		if(document.getElementById('conscompreplyform')) {
			GabeUtil.ajaxFormJson("#conscompreplyform", {
				success : function(response) {
					if(response.status == 'OK') {
						$("#content-wrapper").html(GabeUtil.htmlDecode(response.message));
					} else {
						alert(response.message);	
					}	
				}					  
			});
		}
	}
	$("#conscomplaintinfo").html("<center>Please wait while we verify the complaint confirmation code.</center>");
	GabeUtil.ajaxRequest('get', url, getopt);
}

DirComp.setStarsReviewRating = function(elem, rating, option) {
	if(!option) {
		option = {};	
	}
	if(!option.callback) {
		option.callback = function(data) {
			
		}	
	}
	var width = $(".pbreview-stars:eq(0)", $(elem)).width();
	var rating2 = rating / 100;
	var newwidth = rating2 * width;
	// alert(rating);
	$(".pbreview-stars-blue:eq(0)", $(elem)).css('width', newwidth);
	$(".pbreview-rating", $(elem)).html(Math.round(rating));
	
	var roundrating = Math.round(rating);
	var selector = $(elem).metadata().formfield;
	if(selector) {
		$(selector).val(roundrating);
		option.callback(roundrating);
	} else {
		option.callback(roundrating);
	}
	
}

DirComp.regStarsReview = function(div, option) {
	
	if(!option) {
		option = {};	
	}
	var html = '<div class="pbreview-stars"><div class="pbreview-stars-blue"></div></div><span class="pbreview-rating-wrapper"><span class="pbreview-rating"></span>%</span>';
	$(div).html(html);
	
	$(".pbreview-stars", $(div)).mousemove(function(e) {
		if(option.static) {
			return;	
		}
		var pos = null;
		var divs = div.childNodes;
		for(var i = 0; i < divs.length; i++) {
			if(divs[i].className == 'pbreview-stars') {
				pos = GabeUtil.getAbsolutePos(divs[i]);
			}
			if(pos !== null) {
				break;	
			}
		}
		var width = $(".pbreview-stars:eq(0)", $(div)).width();
		// alert(e.pageX + ' ' + pos.x);
		DirComp.setStarsReviewRating(div, ((e.pageX - pos.x) / width) * 100, option);
	});
	
	var crating = $(div).metadata().rating;
	if(!crating) {
		crating = 50;	
	}
	DirComp.setStarsReviewRating(div, crating, option);
	
}
