function __l(str, lang_code) {
    //TODO: lang_code = lang_code || 'en_us';
    return(cfg && cfg.lang && cfg.lang[str]) ? cfg.lang[str]: str;
}
function __cfg(c) {
    return(cfg && cfg.cfg && cfg.cfg[c]) ? cfg.cfg[c]: false;
}
(function($) {
    $.fn.confirm = function() {
        this.livequery('click', function(event) {
            return window.confirm('Are you sure you want to ' + this.innerHTML.toLowerCase() + '?');
        });
    };
    $.froundcorner = function(selector) {
        if ($.browser.msie || $.browser.opera) {
            $(selector).livequery(function() {
                $this = $(this);
                radius = /.*round-(\d+).*/i.exec($this.attr('class'));
                $this.corner(radius[1] + 'px');
            });
        }
    };
    $.fn.flash = function() {
        $(this).livequery(function() {
            $this = $(this);
            $this.fadeOut(10000, function() {
                $this.remove();
            });
        });
    };
	   $.fn.clickselect = function() {
        this.livequery('click', function(event) {
            $(this).trigger('select');
        });
    };
    $.fn.fautocomplete = function() {
        $(this).livequery(function() {
            var $this = $(this);
            $this.autocomplete($this.metadata().url, {
                minChars: 0,
                autoFill: true
/* JSON autocomplete is flaky. Till the issue is sorted out in the jquery.autocomplete, it's commented out
                ,dataType: 'json',
                parse: function(data) {
                    var parsed = [];
                    for (var i in data) {
                        parsed[parsed.length] = {
                            data: data[i],
                            value: i,
                            result: data[i]
                            };
                    }
                    return parsed;
                },
                formatItem: function(row) {
                    return row;
                }*/

            }).result(function(event, data, formatted) {
                var targetField = $this.metadata().targetField.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"');
                var targetId = $this.metadata().id;
                if ( ! $('#' + targetId).length) {
                    $this.after(targetField);
                }
                var tdata = data.toString();
                $('#' + targetId).val(tdata.split(',')[1]).attr('x-data', tdata.split(',')[0]);
                // data is text,val

            }).blur(function() {
                var targetId = $this.metadata().id;
                if ($('#' + targetId).length) {
                    if ($this.val() != $('#' + targetId).attr('x-data')) {
                        $('#' + targetId).remove();
                    }
                }
            });
        });
    };
    $.fn.fuploadajaxform = function() {
        $(this).livequery('submit', function(e) {
            var $this = $(this);
            $('.js-validation-part', $this).block();
            $this.ajaxSubmit( {
                beforeSubmit: function(formData, jqForm, options) {},
                success: function(responseText, statusText) {
                    if (responseText == 'flashupload') {
                        $('.js-upload-form .flashUploader').each(function() {
                            this.__uploaderCache.upload('', this.__uploaderCache._settings.backendScript);
                        });
                    }
					else {
						var validation_part = $(responseText).parent().find('.js-validation-part', $this).html();
						if (validation_part != '') {
							$this.parents('.responses').find('.js-validation-part', $this).html(validation_part);
						}
					}
                }
            });
            return false;
        });
    };
    $.fn.fajaxform = function() {
        $(this).livequery('submit', function(e) {
            var $this = $(this);
            $this.block();
            $this.ajaxSubmit( {
                beforeSubmit: function(formData, jqForm, options) {},
                success: function(responseText, statusText) {
                    if($('.'+$this.metadata().container).html()){
                        $('.'+$this.metadata().container).html(responseText);
                        $('.'+$this.metadata().container).unblock();
   					}
   					else{
                        $this.parents('.responses').html(responseText);
                        $this.unblock();
                    }
                }
            });
            return false;
        });
    };
    $.fn.fcommentform = function() {
        $(this).livequery('submit', function(e) {
            var $this = $(this);
            $this.block();
            $this.ajaxSubmit( {
                beforeSubmit: function(formData, jqForm, options) {},
                success: function(responseText, statusText) {
                    if (responseText.indexOf($this.metadata().container) != '-1') {
                        $('.' + $this.metadata().container).html(responseText);
					} else {
						$('.js-responses').prepend(responseText);
						$('.' + $this.metadata().container + ' div.input').removeClass('error');
						$('.error-message', $('.' + $this.metadata().container)).remove();
                    }
					$this.unblock();
                },
	            clearForm: true
            });
            return false;
        });
    };
    //  date picker function starts here
    var i = 1;
    $.fn.fdatepicker = function() {
        $(this).livequery(function() {
            var class_for_div = $(this).attr('class');
            var year_ranges = $(this).children('select[id$="Year"]').text();
            if ($.browser.msie) {
                var each_year = year_ranges.split(' ');
                // ie sees this as space

            } else {
                var each_year = year_ranges.split('\n');
                // where as other browsers see it as \n

            }
            var startyear = each_year[2];
            // as the first one select
            if ($.browser.msie) {
                var last_index = each_year.length - 1;
                // this array returns one null value at the end

            } else {
                var last_index = each_year.length - 2;
                // this array returns two null value at the end

            }
            var endyear = each_year[last_index];
            var cakerange = startyear + ':' + endyear;
            var new_class_for_div = 'input';
            if (class_for_div.indexOf('required') !=- 1) {
                new_class_for_div += ' required';
            }
            var label = $(this).children('label').text();
            $(this).hide().after('<div id="datewrapper' + i + '" class="' + new_class_for_div + '">' + label + '<div id="cakedate' + i + '" title="Select date"></div></div>');
            year = $(this).children('select[id$="Year"]').val();
            month = $(this).children('select[id$="Month"]').val();
            day = $(this).children('select[id$="Day"]').val();
            $('#cakedate' + i).datepicker( {
                dateFormat: 'yyyy-mm-dd',
                defaultDate: sel_date,
                clickInput: true,
                speed: 'fast',
                changeYear: true,
                changeMonth: true,
                yearRange: cakerange,
                onSelect: function(sel_date) {
                    var newDate = sel_date.split('-');
                    $(this).parent().prev().children("select[id$='Day']").val(newDate[2]);
                    $(this).parent().prev().children("select[id$='Month']").val(newDate[1]);
                    $(this).parent().prev().children("select[id$='Year']").val(newDate[0]);
                }
            });
			if($(this).children('select[id$="Hour"]').html()) {
				hour = $(this).children('select[id$="Hour"]').val();
				minute = $(this).children('select[id$="Min"]').val();
				meridian = $(this).children('select[id$="Meridian"]').val();
				var sel_date = new Date();
				sel_date.setFullYear(year, (month - 1), day);
				if (minute == 0) {
					minute = '00';
				}
				var selected_time = hour + ':' + minute + ' ' + meridian;
				$('#cakedate' + i).after('<input type="text" id="caketime' + i + '" title="Select time" readonly="readonly" size="10"/>');
				$('#caketime' + i).timepickr( {
					convention: 12,
					val: selected_time
				}).livequery('blur',function(){
					var value = $(this).val();
					var newmeridian = value.split(' ');
					var newtime = newmeridian[0].split(':');
					$(this).parent().prev().children("select[id$='Hour']").val(newtime[0]);
					$(this).parent().prev().children("select[id$='Min']").val(newtime[1]);
					$(this).parent().prev().children("select[id$='Meridian']").val(newmeridian[1]);
				});
			}
			i = i + 1;
        });
    };
    /////////date time picker function ends here

})
(jQuery);
var rdata;
var curPos = 0;
var tmr;
function grabMapData() {
	$.getJSON( __cfg('path_relative') + 'photos/recent.json',
	function(data){
				rdata = data;
				tmr = setInterval(parseMapData, 5000);
	});
}
function parseMapData() {
	var geocoder = new GClientGeocoder();
	$.each(rdata, function(i,item) {
		if(curPos == 24) { clearInterval(tmr); }
		if(i == curPos) {
			curPos = curPos + 1;
			geocoder.getLatLng(
				item.User.location,
				function(point) {
					if (!point) {
						// do something
					} else {
						map.clearOverlays();
						map.panTo(point);
						var marker = new GMarker(point);
						map.addOverlay(marker);
						img_url_link = item.Photo.slug
						img_url =  item.Photo.map_img_url;
						img_url_link =  __cfg('path_relative')+ 'f2'+img_url_link;
						var html = '<div style="clear:both;height:125px;"><a href="'+ __cfg('path_relative')+'user/'+item.User.username+'"><img style="float:left;border:1px solid #000000;margin-right:4px;" width="48" height="48" src="' + item.User.avatar_url + '" align="top" alt="sexypeek" /></a><span style="font-size:12px;font-weight:bold;">' + item.User.username + '</span><br/><a href="'+img_url_link+'"><img style="width:90px;padding-top:5px;" src="' + img_url + '" border="0" /><div style="padding-top:4px;text-align:center;font-size:12px;color:#555555;">' + item.User.location + '</a></div></div>';
						marker.openInfoWindowHtml(html);
					}
				}
			);
			return false;
		}
	});
}
    function loadMap() {
		map = null;
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById('js-map'));
			map.setCenter(new GLatLng(37.4419, -122.1419), 2);
		}
				grabMapData();
    }

jQuery('html').addClass('js');
$(document).ready(function() {
	$('#js-map').livequery(function() {		
      var script = document.createElement("script");
	  var google_map_key = "http://maps.google.com/maps?file=api&v=2.x&key=" + __cfg('google_map_key')+"&c&async=2&callback=loadMap";
      script.setAttribute("src",  google_map_key);
      script.setAttribute("type", "text/javascript");
      document.documentElement.firstChild.appendChild(script);
	});
    // common confirmation delete function
    $('a.js-delete').confirm();
    // bind form using ajaxForm
    $('.js-ajax-form').fajaxform();
    // bind form comment using ajaxForm
    $('.js-comment-form').fcommentform();
	$('#js-clickselect').clickselect();
	$('#js-click-embedselect').clickselect();
    // bind upload form using ajaxForm
    $('.js-upload-form').fuploadajaxform();
    // jquery flash uploader function
    $('.js-uploader').fuploader();
    // jquery ui tabs function
    $('.js-tabs').tabs();
    // jquery autocomplete function
    $('.js-autocomplete').fautocomplete();
    // round corner function
    $.froundcorner('.js-corner');
    // flash message function
    // jquery datepicker
    $('.js-datetime,.js-date').fdatepicker();
    $('#errorMessage,#authMessage,#successMessage,#flashMessage,#flashMessage').flash();
    // admin side select all active, inactive, pending and none
    $('.js-admin-select-all').livequery('click', function() {
        $('.js-checkbox-list').attr('checked', 'checked');
        return false;
    });
    $('.js-admin-select-none').livequery('click', function() {
        $('.js-checkbox-list').attr('checked', false);
        return false;
    });
    $('.js-admin-select-pending').livequery('click', function() {
        $('.js-checkbox-active').attr('checked', false);
        $('.js-checkbox-inactive').attr('checked', 'checked');
        return false;
    });
    $('.js-admin-select-approved').livequery('click', function() {
        $('.js-checkbox-active').attr('checked', 'checked');
        $('.js-checkbox-inactive').attr('checked', false);
        return false;
    });

	$("a.js-view-full").livequery('click',function(){
     $("div.js-showview").slideToggle();;
  	  return false;
	});

	$("a.js-theimage").livequery('click',function(){
		$('#js-rotate-image').rotateRight();
		 return false;
	});


    // admin side update active, inactive
    $('.js-admin-action').livequery('click', function() {
        var active = $('input.js-checkbox-active:checked').length;
        var inactive = $('input.js-checkbox-inactive:checked').length;
        if (active <= 0 && inactive <= 0) {
            alert('Please select atleast one record!');
            return false;
        } else {
            return window.confirm('Are you sure you want to do this action?');
        }
    });
    //***** For ajax pagination *****//
    $('.js-pagination a').livequery('click', function() {
        $this = $(this);
        $this.parents('div.js-response').block();
        $.get($this.attr('href'), function(data) {
            $this.parents('div.js-response').html(data);
            $this.parents('div.js-response').unblock();
            return false;
        });
        return false;
    });

    // For Rating
    $('.js-rating').livequery('click', function() {
        var $this = $(this);
        $('div.js-rating-display').block();
        $.get($this.attr('href'), function(data) {
            $('.js-rating-display').html(data);
            return false;
        });
        $('div.js-rating-display').unblock();
        return false;
    });

    // Admin side action button hide, when javascript enabled
    $('.js-action-button').hide();

//Handling AJAX Pagination for photos index pages
$('#js-photos-lst div.paging a').livequery('click', function(event) {
      var  _this = $(this);
        $('div.loader').show();
        $.get($(this).attr('href'), {}, function(data) {
            _this.parents('.responses').html(data);
            $('div.loader').hide();
            });
        return false;
    });


    // insert subject variables in email templates in admin side
    $('.js-subject-insert').click(function(e) {
        var $this = $(this).parent('.js-insert');
        $('.js-email-subject', $this).replaceSelection(this.title);
        e.preventDefault();
    });
    // insert content variables in email templates in admin side
    $('.js-content-insert').click(function(e) {
        var $this = $(this).parent('.js-insert');
        $('.js-email-content', $this).replaceSelection(this.title);
        e.preventDefault();
    });
    // captcha reload function
    $('.js-captcha-reload').click(function() {
        captcha_img_src = $(this).parents('.js-captcha-container').find('.captcha-img').attr('src');
        captcha_img_src = captcha_img_src.substring(0, captcha_img_src.lastIndexOf('/'));
        $(this).parents('.js-captcha-container').find('.captcha-img').attr('src', captcha_img_src + '/' + Math.random());
        return false;
    });
    $('.js-admin-index-autosubmit').livequery('change', function() {
        if ($('.js-checkbox-list:checked').val() != 1) {
            alert('Please select atleast one record!');
            return false;
        } else {
            if (window.confirm("Are you sure you want to do this action?")) {
                $(this).parents('form').submit();
            }
        }
    });
    //Coding to toggle right side bar in full image view
    (__cfg('photo_view_type') == 'full_view') ? $('.js-min-max').parent().find('.list-view-block').hide() : $('.js-min-max').hide();
    $('.js-min-max').toggle(function(){
      $(this).removeClass("max");
      $(this).addClass("min");
      $(this).parent().find('.list-view-block').show();
    },function(){
      $(this).removeClass("min");
      $(this).addClass("max");
      $(this).parent().find('.list-view-block').hide();
    });
    $(".login-header-block label.overlabel").overlabel();
});
