function force_mime_json(url){
  if (/\.json/.test(url)) { return url; } 
  else if (/\?/.test(url)) { return url.replace('?','.json?'); } 
  else { return url+'.json'; }
}

function force_mime_js(url){
  if (/\.js/.test(url)) { return url; } 
  else if (/\?/.test(url)) { return url.replace('?','.js?'); } 
  else { return url+'.js'; }
}

// function adapt_font_size() {
//   // actually, the width does not enter into it
//   // it should be the function of height
//   if (screen.width < 1100) {
//     $("body").css("font-size", "1.15em");
//   }else if (screen.width > 1100 && screen.width < 1400) {
//     $("body").css("font-size", "1.2em");
//   }else if (screen.width > 1400) {
//     //$("body").css("font-size", "1.3em");
//   }
// }

// google map
function SearchAndDrawMap(selector, address_string, location_string) {
  var geocoder = new google.maps.Geocoder();
  var map_canvas = $('#map_canvas');
  //
  var t_address = map_canvas.attr('data-address');
  var t_location = map_canvas.attr('data-location');
  var t_match = /^(.*?)[\/\\,]/i.exec(t_address);
  //
  if(t_match){
    t_address = t_match[1]; 
  }  
  var t_full_address = t_address+' '+t_location;
  //
  if(geocoder){
    geocoder.geocode( { 'address' : t_full_address}, function(results, status) {
      if(status == google.maps.GeocoderStatus.OK){
        var location = results[0].geometry.location;
        //
        var myOptions = {
          zoom: 15,
          center: location,
          mapTypeId: google.maps.MapTypeId.HYBRID,
          navigationControl: true,
          mapTypeControl: false
        };
        map_canvas.width('20em');
        map_canvas.height('20em');
        var map = new google.maps.Map(map_canvas[0], myOptions);
        var marker = new google.maps.Marker({map: map, position: location});            
      }
    });
  }
}

function pushAjaxErrorMsg(msg){
  var error_field_names = eval('('+msg+')');
  var t_message = '';
  if($.isArray(error_field_names)){ //
    for(i=0; i<error_field_names.length; i++){ //
      t_message += '<div class="error">'+'<b>'+error_field_names[i][0]+'</b>'+' '+error_field_names[i][1]+'</div>';
    }
    t_message = $(t_message);
  }else{
    t_message = $('<div class="error">'+msg+'</div>');
  }      
  $('#overlay > #status-top > .messages').append(t_message); 
}

// closure compiled
var BrowserDetect = {init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS"},searchString:function(b){for(var a=0;a<b.length;a++){var c=b[a].string,d=b[a].prop;this.versionSearchString=b[a].versionSearch||b[a].identity;if(c){if(c.indexOf(b[a].subString)!=-1)return b[a].identity}else if(d)return b[a].identity}},  searchVersion:function(b){var a=b.indexOf(this.versionSearchString);if(a!=-1)return parseFloat(b.substring(a+this.versionSearchString.length+1))},dataBrowser:[{string:navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",identity:"Safari",versionSearch:"Version"},{prop:window.opera,identity:"Opera"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.platform,subString:"Win",identity:"Windows"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.userAgent,subString:"iPhone",identity:"iPhone/iPod"},{string:navigator.platform,subString:"Linux",identity:"Linux"}]};

var BrowserCheck = {
  set_browser_safe: function(){ $.cookie('browser_check', '1', { expires: 30 }); BrowserCheck.check(); },
  set_browser_postpone: function(){ $.cookie('browser_check', '2', { expires: 30 }); BrowserCheck.check(); },
  set_browser_unchecked: function(){ $.cookie('browser_check', null); BrowserCheck.check(); },
  check: function(){
    $('#browser_warning, #browser_reminder').remove();
    if( $.cookie('browser_check') == '1' ){
      /* ok */ 
    } else if ( $.cookie('browser_check') == '2' ){
      $('#account .float-right').prepend('<span id="browser_reminder" style="margin-right: 1em"><a href="" onClick="BrowserCheck.set_browser_unchecked(); return false;" class="with-image shallow small"><image src="/images/icons/exclamation.png"/> <span class="strong">'+COMMON['update_required']+'</span></a></span>');
    } else {
      BrowserDetect.init();
      var __browser_type = BrowserDetect.browser, __browser_version = BrowserDetect.version;
      var $__message = $('<div id="browser_warning" style="padding: 0.5em 2.5em 0.5em 4em; background: #ffc"><image src="/images/icons/exclamation.png" class="float-left" style="margin-right: 0.5em"/><div class="float-left">'+COMMON['browser_update']+'<br/>'+COMMON['browser_feedback']+'</div><div class="float-right"><a href="" onClick="BrowserCheck.set_browser_postpone(); return false;" class="cancel with-image shallow"><image src="/images/icons/cross-small.png"/> <span>'+COMMON['hide_message']+'</span></a></div><div class="clear"></div></div>');
      var __browser_update_link;
      switch(true){
        //case (/Chrome|Safari/i.test(__browser_type)): 
        //  __browser_update_link = 'http://www.google.com/chrome'; break; /*brofist*/
        case (/Firefox/i.test(__browser_type) && __browser_version < '3.6'):
          __browser_update_link = 'http://www.mozilla.com/firefox'; break;
        case (/Opera/i.test(__browser_type)):
          if(__browser_version < '9.8'){
            __browser_update_link = 'http://www.opera.com/'; break;
          }else{
            if(typeof(opera) !== "undefined"){ if(opera.version() < 10.50){ __browser_update_link = 'http://www.opera.com/'; break; }}
          }
          BrowserCheck.set_browser_safe(); return;
        case (/Explorer/i.test(__browser_type) && __browser_version < '8'):
          __browser_update_link = 'http://www.microsoft.com/windows/internet-explorer/default.aspx'; break;
        default:
          BrowserCheck.set_browser_safe(); return;
      }
      $__message.find('#browser_update_link').attr('href',__browser_update_link).attr('target','_blank');
      $__message.find('#browser_feedback_link').attr('href',$('#feedback_link').attr('href'));
      $('#account').after($__message);
    }
  }
  
}

function toggleHistoryFor(selector_prefix, onLabel, offLabel) { 
  $("#"+selector_prefix+"_history_chevron").toggle();
  $("#"+selector_prefix+"_history_chevron_collapse").toggle();
  $("."+selector_prefix+"_history_hidable").toggle(); //200, таймаут артефачит в некоторых местах с нашей версткой
  var txt = $("#"+selector_prefix+"_history_caption").text();
  $("#"+selector_prefix+"_history_caption").text(txt == onLabel ? offLabel : onLabel);
}