$(function() {
	var options = { 
        beforeSubmit:  AjaxFormAction.onSubmit,  // pre-submit callback 
        success: AjaxFormAction.processJson,  	  // post-submit callback
        dataType: "json" 
	}; 
	$('.ajax_form').ajaxForm(options);
	
    var options = { 
        beforeSubmit:  AjaxFormAction.onSubmit,  // pre-submit callback 
        success: AjaxFormAction.refresh,  	  // post-submit callback
        dataType: "json" 
    }; 
    $('.ajax_places_form').ajaxForm(options);
    	
    
    $("table.content-list tr:nth-child(even)").addClass("even-line");
    $('#pop_add_town input#btn_add_own_go').click(AddOwnGoClick);
    
    $('#form_city_selection select#country_id').change(getCitySelectionList);
    
    $('#form_trip_share #btn_submit').click(tripShare);
    
    $('#msg_inbox_filter').change(appMsgFilter);
    
    $('.date-format').mask("99/99/9999");
    $('.time-format').mask("99:99");
    
    $('#form_trip_edit').submit(tripSubmitCheck);
	$('#image_finder').click(findImage);
	$('#image_suspend').click(findImageSuspend);
	
	$('input#cb_all').click(function(){
		if ($(this).is(":checked")){
			$('input[type=checkbox]').attr('checked', 'checked'); 
		}
		else {
			$('input[type=checkbox]').removeAttr('checked');
		}
	});
});

function formCheckEmpty(_id, message){
	var field_val =  $(_id).val();
	field_val= $.trim(field_val);
	if (field_val == ""){
		alert(message);
		//$(_id).focus();
		return false;
	}
	return true;
}

function formCheckEmpty2(_id, message){
	var field_val =  $('#' + _id).val();
	field_val= $.trim(field_val);
	if (field_val == ""){
		$('#e_' + _id).html(message).addClass("error");
		return false;
	}
	$('#e_' + _id).html('').removeClass("error");
	return true;
}
    
function tripShareSuccess(data){
	tb_remove();
	if(data.share=="0")
	{
		$('#tripShareText').html("UnShare");
		$('#form_trip_share #share').val('1');
		$('#shareAlertText').html("Are you sure you want to unshare this trip?");
	}
	else
	{
		$('#tripShareText').html("Share");
		$('#form_trip_share #share').val('0');
		$('#shareAlertText').html("Are you sure you want to share this trip?");
	}
	
}
    
function tripShare(){
	var _id = $('#form_trip_share #trip_id').val();
	var _share = $('#form_trip_share #share').val();
	var _action = $('#form_trip_share').attr('action');
	$.getJSON(_action, {id: _id,share:_share}, tripShareSuccess);
	return false;
}

function findImage(){
	//alert("in");
	$('#message').html("");
	$('#image_suspend').css('display', "none");
	$('#image_finder_img').html("");
	$('#image_user_name').html("");
	var _imageName = $.trim($('#image_name').val());
	if(_imageName=="")
	{
		$('#message').html("Please enter image name.").addClass("error");
	}
	else
	{
		var _action = $('#form_image_finder').attr('action');
		$.getJSON(_action, {inm: _imageName}, findImageSuccess);
	}
}

function findImageSuccess(data){
	if(data.uid!="")
	{
		$('#uid').val(data.uid);
		$('#image_suspend').css('display', "");
		$('#image_finder_img').html("<img src='/"+data.url+"' width='300'>");
		$('#image_user_name').html(data.un);
	}
	else
	{
		$('#message').html("No image can be found").addClass("error");
	}
	
}

function findImageSuspend(){
	//alert("in");
	if(confirm("Are you sure?"))
	{
		var _uid = $.trim($('#uid').val());
		if(_uid=="")
		{
			$('#message').html("No user can be found.").addClass("error");
		}
		else
		{
			var _action = "/manager/image-finder/suspend";
			$.getJSON(_action, {uid: _uid}, findImageSuspendSuccess);
		}
	}
}

function findImageSuspendSuccess(data){
	
	$('#message').html(data.msg).addClass("error");

}

function tripSubmitCheck(){
	if (!formCheckEmpty('#form_trip_edit input#name', "Please enter the trip name")){
		return false;
	}
	if (!formCheckEmpty('#form_trip_edit input#start_date', "Please enter the start date")){
		return false;
	}
	if (!formCheckEmpty('#form_trip_edit input#end_date', "Please enter the end date")){
		return false;
	}
	return true;
}

function checkCityGuideForm(){
	var valid = true;
	if (!formCheckEmpty2('name', "Please enter the name")){
		valid = false;
	}
	var _address1 = $.trim($('#address1').val()); 
	var _address2 = $.trim($('#address2').val());
	if (_address1 == "" && _address2 == ""){
		$('#e_address1').html('Please enter the shipping address').addClass("error");
		valid = false;
	}
	else {
		$('#e_address1').html('').removeClass("error");
	}
	if (!formCheckEmpty2('neighborhood', "Please enter the neighborhood")){
		valid = false;
	}
	var _amentity1 = $('#amentity-1').is(':checked'); 
	var _amentity2 = $('#amentity-2').is(':checked');
	var _amentity3 = $('#amentity-3').is(':checked');
	var _amentity4 = $('#amentity-4').is(':checked');
	if (!_amentity1 && !_amentity2 && !_amentity3 && !_amentity4){
		$('#e_amentity').html('Please choose the amentity').addClass("error");
		valid = false;
	}
	else {
		$('#e_amentity').html('').removeClass("error");
	}
	return valid;
}

function appValidateWhiteboard(){
	tinyMCE.triggerSave();
	if (formCheckEmpty2('message', "Please enter the message") == false){
		return false;
	}
	return true;
}

function appValidateVideoUpload(){
	if (formCheckEmpty2('embedded', "Please enter the video embedded text") == false){
		return false;
	}
	return true;
}

function appValidateNetworkJoin(){
	if (formCheckEmpty2('name', "Please enter the network name ") == false){
		return false;
	}
	return true;
}

function updateCitySelectionList(data){
	var city = $('#form_city_selection select#city_id');
	city.empty();
	xhtml = "";
	for (var key in data){
		xhtml = xhtml + '<option value="' + key + '">' + data[key] + '</option>';
	}
	city.html(xhtml);
}

function getCitySelectionList(){
	var url = location.href;
	var _country_id = this.value;
	var re = new RegExp("city-guide.*", "g");
	url = url.replace(re, "city-guide/get-city-list");
	$.getJSON(url, {id: _country_id}, updateCitySelectionList); 
}


function updateUpcomingTripPage(data){
	$('#upcomingTripList').html(data.list);
}

function getUpcomingTripPage(uid,p){
	var url = location.href;
	var re = new RegExp("home.*", "g");
	url = url.replace(re, "home/get-upcoming-trip-page");
	$.getJSON(url, {uid: uid,page: p}, updateUpcomingTripPage); 
}


function AddOwnGoClick(){
	var _type = $('#TB_window select#add_own_url').val();
	var _base = $('#TB_window #add_own_base').val();
	if (_type != ""){
		window.location = _base + _type + "/#guide";
	}
}

var AjaxFormAction = {
	
	onSubmit : function (formData, jqForm, options){
		$('.message').html('').removeClass('message');
	},
	
	onSubmit2 : function (formData , jqForm , options){
		AjaxFormAction.onSubmit(formData, jqForm, options);
		for (var i=0; i < formData.length; i++) { 
        	if (formData[i].name == "page_content"){
               	var ed = tinyMCE.get('page_content');
               	formData[i].value = ed.getContent();
            }
        } 
    	return AjaxFormAction.onSubmit(formData, jqForm, options); 	
	},

	onSuccess: function (responseText, statusText){	},
	
	processJson: function (data) {
		$('.errField').removeClass('errField');
		if (data.action == "redirect"){
			window.location = data.url;
		}
		else if (data.action == "refresh"){
			window.location.reload();
		}
		else if (data.action == "refresh_parent"){
			parent.location.reload();
		}
		else if (data.action == "close_thickbox"){
			tb_remove();
		}
		else if (data.action == "close_iframe"){
			parent.tb_remove();
		}
		else if (data.action == "success"){
			$("#" + data.id).html(data.message).addClass("error");
			$('#' + data.form_name).clearForm();
			for (var key in data.params){
				var _id = "#" + key; 
				if ($(_id).is("input")){
					$(_id).val(data.params[key]);
				}
				else {
					$(_id).html(data.params[key]);	
				}
			}
		}
		else {
			$(".error").html("").removeClass("error");
			for (var key in data.errors){
				$("#e_" + key).html(data.errors[key]).addClass("error");
			}
		}
	}
	
}

function setIdentifierPattern(pattern, name_start, name_len) {
    var openid_box = document.getElementById('openid_identifier');
    openid_box.value = pattern;
    openid_box.focus();

    if (window.ActiveXObject) {
        try {
            var tr = openid_box.createTextRange();
            tr.collapse(true);
            tr.moveStart('character', name_start);
            tr.moveEnd('character', name_len);
            tr.select();
        } catch (e) {}
    } else {
        openid_box.setSelectionRange(name_start,name_start+name_len);
    }
}
var openID2Providers = {
    /*'myopenid': 'http://myopenid.com/',
    'verisign': 'http://pip.verisignlabs.com/',
    'flickr': 'http://flickr.com/'*/
};
function selectProvider(name) {
	if (name == 'aol') {
        setIdentifierPattern("openid.aol.com/username",15,8);
    } else if (name == 'blogger') {
        setIdentifierPattern("blogname.blogspot.com",0,8);
    } else if (name == 'wordpress') {
        setIdentifierPattern("blogname.wordpress.com",0,8);
    } else if (name == "yahoo") {
    	setIdentifierPattern("yahoo.com", 0, 0);
    } else if (name == "google"){
    	setIdentifierPattern("www.google.com/accounts/o8/id", 0, 0);
    } else if (name == "technorati"){
    	setIdentifierPattern("technorati.com/people/technorati/username", 33, 8);
    } else if (name == 'livejournal') {
        setIdentifierPattern("username.livejournal.com",0,8);
    } else if (name == 'vox') {
        setIdentifierPattern("member.vox.com",0,6);
    } else if (name == 'claimid') {
        setIdentifierPattern("http://claimid.com/username",12,8);
    } else if (name == 'myopenid') {
        setIdentifierPattern("http://username.myopenid.com/",7,8);
    } else if (name == 'verisign') {
        setIdentifierPattern("username.pip.verisignlabs.com/",0,8);
    } else if (name == 'flickr') {
        setIdentifierPattern("www.flickr.com/photos/username",25,8);
    } 
}


String.prototype.parseCsv = function(opt_options){
	var results = [];
	var opts = opt_options||{};
	var iLat = opts.lat||1;
	var iLng = opts.lng||0;
	var lines = this.split("\n");
	for (var i=0; i<lines.length; i++) {
	  var blocks = lines[i].split('"');
	  //finding commas inside quotes. Replace them with '::::'
	  for(var j=0;j<blocks.length;j++){
	    if(j%2){
	      blocks[j]=blocks[j].replace(/,/g,'::::');
	    }
	  }  //@author Esa 2008, keep this note.
	  lines[i] = blocks.join("");
	  var lineArray = lines[i].split(",");
	  var lat = parseFloat(lineArray[iLat]);
	  var lng = parseFloat(lineArray[iLng]);
	  var point = new GLatLng(lat,lng);
	  //after splitting by commas, we put hidden ones back
	  for(var cell in lineArray){
	    lineArray[cell] = lineArray[cell].replace(/::::/g,',');
	  } //corrupted line step-over
	  if(!isNaN(lat+lng)){
	    point.textArray = lineArray;
	    results.push(point);
	  }
	}
	return results;
}

function populateMap(map, points, opt_options){
	var _image_name = opt_options.image_name;
	var _image_width = opt_options.image_width;
	var _image_height = opt_options.image_height;
	if (_image_name != "" && _image_width != 0 && _image_height != 0){
		var tiny = new GIcon();
  		tiny.image = _image_name;
  		tiny.iconSize = new GSize(_image_width, _image_height);
  		tiny.iconAnchor = new GPoint(_image_width / 2, _image_height /2);
  		tiny.infoWindowAnchor = new GPoint(0, 0);
	}
	
	var bounds = new GLatLngBounds();
	var opts = opt_options||{};
	var color = opts.color||'red';
	for (var i=0; i < points.length; i++) {
		var label = points[i].textArray[2];
		if (tiny){
			points[i].marker = new GMarker(points[i],{title: label, icon:tiny});
		}
		else {
			points[i].marker = new GMarker(points[i],{title: label});
		}
		map.addOverlay(points[i].marker);
		bounds.extend(points[i]);
		createInfoWindow(points[i]);
	}
}

function createElem(opt_className, opt_html, opt_tagName) {
	var tag = opt_tagName||"div";
	var elem = document.createElement(tag);
	if (opt_html) elem.innerHTML = opt_html;
	if (opt_className) elem.className = opt_className;
	return elem;
}


function createInfoWindow(point){
	var iwNode = createElem("info-window");
	for(var i=2; i<point.textArray.length; i++)
		iwNode.appendChild(createElem("iw-cell-"+i, point.textArray[i]));
  	point.marker.bindInfoWindow(iwNode,{maxWidth:300});
}

function appCreateAlbum(_url){
	var _refer_id = 0;
	var _name = $(".create_album #album_name").val();
	if ($(".create_album #link_to").is(':checked')){
		_refer_id = $('.create_album #refer_id').val();
	}
	if (_name){
		$.post(_url, {name: _name, refer_id: _refer_id}, function(data){
			if (data.action == "success"){
				window.location.reload();
			}
		}, "json"); 
	}
}

function appDeleteAlbum(_url){
	var _album_id = $('#delete_album_id').val();
	if (_album_id){
		$.post(_url, {id: _album_id}, AjaxFormAction.processJson, "json"); 
	}
}

function appSetAblumName(){
	var _url = $('#album_name_action').val();
	var _album_id = $('#album_id').val();
	var _album_name = $('#album_name').val();
	if (_album_name && _album_id){
		$.post(_url, {id: _album_id, name: _album_name}, function(data){
			appSwitchEdit('album',false);
			if (data.action == "success"){
				$('.album_view').html(data.params['album_name']);
			}
		}, "json"); 
	}
	
	return false;
}

function appDeletePhoto(_url){
	var _photo_id = $('#delete_photo_id').val();
	if (_photo_id){
		$.post(_url, {id: _photo_id}, AjaxFormAction.processJson, "json"); 
	}
}

function appToggleProfileVisible(_id){
	var _url = $('#profile_visible_action').val();
	if (_id){
		$.post(_url, {id: _id}, AjaxFormAction.processJson, "json");
	}
}

function appSetLocation(){
	var _url = $('#form_location').attr('action');
	var _location = $('#form_location input#location').val();
	var _country_id = $('#form_location select#country_id').val();
	var _track_ip = 0;
	if ($('#track_ip').is(':checked')){
		_track_ip = 1;
	}
	if (_location){
		$.post(_url, {location: _location, country_id: _country_id, track_ip: _track_ip}, function(data){
			if (data.action == "success"){
				$('#label_location').html(data.params.label_location);
				appSwitchEdit('location', false);
			}
		}, "json");
	}
	return false;
}

function appSetTrackIp(){
	if ($('#track_ip').is(':checked')){
		$('#form_location .location_edit2').show();
		$('#form_location .location_view2').hide();
	}
	else {
		$('#form_location .location_edit2').hide();
		$('#form_location .location_view2').show();
	}
	return false;
}

function appSwitchEdit(name, show){
	if (show){
		$("." + name + "_edit").css('display', "");
		$("." + name + "_view").css('display', "none");
		$(".btn_" + name + "_edit").css('display', "none");
		$(".btn_" + name + "_view").css('display', "");
	}
	else {
		$("." + name + "_edit").css('display', "none");
		$("." + name + "_view").css('display', "");
		$(".btn_" + name + "_edit").css('display', "");
		$(".btn_" + name + "_view").css('display', "none");
	}
	return false;
}

function appSendFriendRequest(_url, friend_id, _type){
	if (friend_id){
		$.post(_url, {id: friend_id }, function(data){
			if (data.action == "success"){
				if (_type == 1){
					var _key = 'friend_' + friend_id; 
					$('#' + _key).html(data.params[_key]);
				}
				else {
					$('#btn_add_friend').html('Friend Requested');
				}
			}
		},"json");
	}
	return false;
}

function appSendFriendApprove(_url, friend_id){
	if (friend_id){
		$.post(_url, {id: friend_id}, AjaxFormAction.processJson, "json");
	}
	return false;
}

function appSendFriendBlock(_url, friend_id){
	if (friend_id){
		$.post(_url, {id: friend_id}, AjaxFormAction.processJson, "json");
	}
	return false;
}

function appMsgFilter(){
	//alert(this.value);
	var filter_val = this.value; 
	if (filter_val == "All"){
		$('#msg_inbox_list :checkbox').attr('checked', true);
		return true;
	}
	$('#msg_inbox_list :checkbox').removeAttr('checked');
	if (filter_val != "None"){
		$('#msg_inbox_list tr').each(function(){
			if ($(this).find('input:hidden').val() == filter_val){
				$(this).find(':checkbox').attr('checked', true);
			}
		});
	}
}

function appMsgSetStatus(action){
	$('form#form_msg_inbox input#msg_action').val(action);
	$('form#form_msg_inbox').submit();
	return false;
}

function appCityReadMore(_show){
	if (_show){
		$('.city_more_block').show();
		$('.city_brief_block').hide();
	}
	else{
		$('.city_more_block').hide();
		$('.city_brief_block').show();
	}
	return false;
}
function pageGo(url,p,pc)
{
	if (/[^0-9]/g.test(p)){
		p=1;
	}
	if(parseInt(pc)<parseInt(p))
	{
		p = pc;	
	}
	if(parseInt(p)<1)
	{
		p=1;	
	}
	window.location = "/"+url+"&page="+p;
}
//window.onunload = GUnload;

(function($){
	$.fn.editTip = function(options){
		
		this.each(function(i){
			this.value = this.title;
			$(this).click(function(){
				if (this.value == this.title){
					this.value = "";
				}
			});
			
			$(this).blur(function(){
				if (this.value.length == 0){
					this.value = this.title;
				}
			});
		});
		
		return this;
	}
})(jQuery);