/*
	Add Librally ad lib
	by HAYA
*/
/* @@ Cross Browser Script Support */

(function(){

var ua = navigator.userAgent;
var isSafari = ( navigator.appVersion.indexOf("KHTML") > -1 );
var WebKitBuild = (ua.substr( ua.indexOf("AppleWebKit") +12, 7 )).split(" ")[0];

/* @ replace callback support for safari @最速 */
if( isSafari && WebKitBuild < "312.8.2" ){ //417.9?
	var default_replace = String.prototype.replace;
	String.prototype.replace = function(search,replace){
		// replace is not function
		if(typeof replace != "function"){
			return default_replace.apply(this,arguments);
		}
		var str = ""+this;
		var callback = replace;
		// search string is not RegExp
		if(!(search instanceof RegExp)){
			var idx = str.indexOf(search);
			return (
				idx == -1 ? str :
				default_replace.apply(str,[search,callback(search, idx, str)])
			)
		}
		var reg = search;
		var result = [];
		var lastidx = reg.lastIndex;
		var re;
		while((re = reg.exec(str)) != null){
			var idx  = re.index;
			var args = re.concat(idx, str);
			result.push(
				str.slice(lastidx,idx),
				callback.apply(null,args).toString()
			);
			if(!reg.global){
				lastidx += RegExp.lastMatch.length;
				break;
			}else{
				lastidx = reg.lastIndex;
			}
		}
		result[result.length] = str.slice(lastidx);
		return result.join("");
	}
}

/* @ the garble control for safari (XMLHttpRequest#responseText) */
var AjaxFillterForSafari = function( text ){
	var esc = escape( text );
	return ( esc.indexOf("%u") < 0 && esc.indexOf("%") > -1 ) ? decodeURIComponent( esc ) : text;
};
// For jQuery.js
if( window.jQuery != undefined && isSafari && WebKitBuild < "500" ){ // for safari 1.x-2.x
	var _httpData=window.jQuery.httpData;
	// jQuery.httpData (jQuery 1.2.3)
	window.jQuery.httpData=function( r, type ){
		try{
			var ct = r.getResponseHeader("content-type");
			var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0;
			var data = xml ? r.responseXML : AjaxFillterForSafari( r.responseText );

			if ( xml && data.documentElement.tagName == "parsererror" )
				throw "parsererror";

			// If the type is "script", eval it in global context
			if( type == "script" )
				jQuery.globalEval( data );

			// Get the JavaScript object, if JSON is used.
			if( type == "json" )
				data = eval("(" + data + ")");

			return data;
		}catch(e){
			return _httpData.apply(this.arguments);
		}
	}
}

/* hasOwnProperty for Safari */
/* for in roopで反応してバグるから没
if( isSafari && WebKitBuild <= "416.1" ){ //417.9?
	if(!Object.hasOwnProperty){
		Object.prototype.hasOwnProperty = function(it){
			return ( this[it] && !this.constructor.prototype[it] );
		}
	}
}
*/

})();

