/*
 * project.js
 * URL
 * 
 * Copyright (c) 2009 IMG SRC Inc.
 *
 */

var Project = function(){}

Project.prototype = {
	init: function(){
		this.loadScript(),
		this.addRollover(),
		this.addTargetBlank(),
		this.addScroll()
	},

	checkOS: {
		//win: navigator.userAgent.indexOf('Win',0) != -1,
		//mac: navigator.userAgent.indexOf('Mac',0) != -1
	},
	
	checkBrowser: {
		//opera: navigator.userAgent.indexOf('Opera') > 0,
		//chrome: navigator.userAgent.indexOf('Chrome') > 0,
		//firefox: navigator.userAgent.indexOf('Firefox') > 0,
		//safari: navigator.userAgent.indexOf('Safari') > 0,
		ie: navigator.userAgent.indexOf('MSIE') > 0,
		ie6: navigator.userAgent.indexOf('MSIE 6') > 0
	},

	loadScript: function(){
		// js directory
		var path = '/shared/script/';
		// js files
		var scripts = [
			'plugin/jquery/easing.js'
		];
		
		if(this.checkBrowser.ie6){
			scripts.push('plugin/iepngfix.js');
		}

		for(var i = 0; i < scripts.length; i++){
			var element = document.createElement('script');
			element.src = path + scripts[i];
			element.type = 'text/javascript';
			document.body.appendChild(element);
		}
	},

	addRollover: function(){
		// add class 'rollover'
		var images = $('img.rollover, input.rollover');

		if(!images.length) return;

		var offSuffix = "_off.";	// e.g. button_off.gif
		var onSuffix = "_on.";		// e.g. button_on.gif

		for(var i = 0; i < images.length; i++){
			if(images[i].getAttribute("src").match(offSuffix)){
				images[i].onmouseover = function(){
					this.setAttribute("src", this.getAttribute("src").replace(offSuffix, onSuffix));
				}
				images[i].onmouseout = function(){
					this.setAttribute("src", this.getAttribute("src").replace(onSuffix, offSuffix));
				}
			}
		}	
	},

	addTargetBlank: function(){
		$('a[rel="external"][href]').attr('target', '_blank');	
	},

	addScroll: function(){
		if(!$('a[href^="#"]')) return;

		var durationTime = 1000;
		var easingType = 'easeInOutCirc';

		$('a[href^="#"]').click(function(){		
			var target = $(this).attr('href');

			if(target == "#"){
				$(this).blur();		
				$('html,body').animate({ scrollTop: 0 }, durationTime, easingType);
				return false;
			}
					
			var targetOffset = $(target).offset().top;
					
			$(this).blur();
			$('html,body').animate({ scrollTop: targetOffset }, durationTime, easingType);
			
			return false;
		})
	}
}

$(function(){
	var ProjectName = new Project();
	ProjectName.init();
	clearMlocal();
});


/*=================================================================
//
// .link
//
=================================================================*/
function clicklink(url) {
	location.href = url;
	return false;
}

/*=================================================================
//
// .report render
//
=================================================================*/
function report_render(cate) {
	$.ajax({
		type: "POST",
		url: '/report/entries.json',
		dataType: "json",
		success: function(data,dataType) {
			var tmpl = $('#report-template').html();
			var objs = data[cate].list;
			var htmls ='';
			var len = objs.length;
			
			if(len == 0) return false;
			
			for (var i in objs) {
				
				var e =objs[i];
				var param = {
					title            : e['title'],
					date             : e['date'],
					textlink         : e['textlink'],
					textbody         : e['textbody'],
					thumb            : e['thumb']
				}
				
				htmls += tiny_tmpl(tmpl,param);
			}
			
			$('#TARGET').html(htmls);
			
		},
		error: _on_error
	});
}

// 自分が必要な機能だけを実装した sprintf()
function tiny_prtf() {
		var tmpl = arguments[0], pidx = 1;
		var re = new RegExp("(%0?-?(?:[1-9][0-9]*)?[ds])", "g"), re1 = new RegExp("^%(0)?(-)?([1-9][0-9]*)?[ds]$");
		var r = [], e, m, i = 0;
		while (e = re.exec(tmpl)) {
			var v = e[0];
			r.push(tmpl.substring(i, re.lastIndex - e[0].length));
			if (m = v.match(re1)) {
				e = arguments[pidx++].toString();
				var p = m[1] || " ", l = parseInt(m[3]) || 0;
				if (m[2] == "-") while (e.length < l) e += p
				else while (e.length < l) e = p + e;
				r.push(e);
			}
			i = re.lastIndex;
		}
		r.push(tmpl.substring(i, tmpl.length + 1));
		return r.join("");
	}
	// sprintf() 拡張が利用可能な極小テンプレートエンジン
	// eg: tiny_tmpl("ok: (${unknown}), (${%02d day}), (${%2d day}), (${day}), (${%s str}), (${%8s str}), (${%-8s str})", { day:5, str:"test" }));
function  tiny_tmpl(tmpl, obj) {
		var re = new RegExp("(\\$\\{[^}]+\\})", "g"), re1 = new RegExp("^\\$\\{(?:(%0?-?(?:[1-9][0-9]*)?[ds]) )?([^}]+)\\}$");
		var r = [], e, m, i = 0;
		while (e = re.exec(tmpl)) {
			var v = e[0];
			r.push(tmpl.substring(i, re.lastIndex - e[0].length));
			if (m = v.match(re1)) {
				r.push( (m[1] && m[1].length > 0) ? tiny_prtf(m[1], obj[m[2]]) : obj[m[2]] || "" );
			}
			i = re.lastIndex;
		}
		r.push(tmpl.substring(i, tmpl.length + 1));
		return r.join("");
	}
	
function  _on_error(xhr, textStatus, error) {
		console.debug(xhr);
		console.debug("textStatus: " + textStatus);
		console.debug("error: " + error);
	}


/*=================================================================
//
// .formSubmit
//
=================================================================*/
function formSubmit(_target) {
	var form = document.forms[_target];
	form.submit();
	return false;
}

function clearMlocal() {
	if($('#mail_email').attr("value") != "")
		$('#mail_email').attr("value","");
}

function informUrl() {
  var mailad = $('#mail_email').attr("value");
  if (mailad == "") return false; 
  if (!mailad.match(/^[A-Za-z0-9]+[\w\.-]+@[\w\.-]+\.\w{2,}$/)){
	alert("アドレスをご確認ください。");
	clearMlocal();
	return false;
}


  var par       = mailad;	
	$.ajax({
		type: "POST",
		url: "/shared/script/sendmail.php",
		data: ({email : par}),
		success: function(msg){ clearMlocal();alert(msg);},
		complete: function(msg){},
		error : function(msg){
alert(msg);
}
	});
	
	return false;
	/*
  var a = new Ajax.Request('/inform_url.cgi',
			   {
			     method:     'post',
			     parameters: par,
			     onComplete: function(origreq) {
			       var st;
			       eval("st = "+origreq.responseText);
			       alert(st.msg)
			     }
			   });
	*/
}

/*=================================================================
//
// .BLOG page : render blog navi
//
=================================================================*/
function renderBlogNavi() {
	
	$("#blognavi").load("/blog/index.html #blognavi");
	
	/*
	$.ajax({
	  url: "/blog/index.html #blognavi",
	  cache: false,
	  success: function(html){
		console.log(html);
		$("#blognavi").append(html);
	  }
	});
	*/
}
