if (typeof(jQuery) != 'undefined') jQuery.noConflict();

/**
 * Use Global
 */
var store;
var keyDownEscFlag = false;

function call_command(cmd, argstr) {
	if (is_run_on_air()) {
		location.href = 'call:' + cmd + ',' + new Date().getTime() + ',' + argstr;
	} else {
		msgBox('実行エラー', 'Webからは操作できません。');
	}
}

function is_run_on_air() {
	return (navigator.userAgent.indexOf('AdobeAIR') >= 0);
}

function systemExit() {
	call_command('systemExit');
}

function getUrl(url) {
	if (is_run_on_air()) {
		call_command('getUrl', url);
	} else {
		window.open(url);
	}
}

function msgBox(t, m) {
	if (is_run_on_air())
		call_command('msgBox', t + ',' + m);
	else if (typeof(Ext) != 'undefined') {
		Ext.Msg.alert(t, m, function(){
			keyDownEscFlag = false;
		});
		keyDownEscFlag = true;
	} else
		alert(t, m);
}

function loadTag() {
	var buf = '';
	for (var i=0; i<arguments.length; i++) {
		if (i > 0) buf += ',';
		buf += arguments[i];
	}
	call_command('loadTag', buf);
}

function setupCommon() {
	jQuery('#btn-manual').click(function(e) {
		getUrl('http://www.digitalstage.jp/go/sync3/manual.html');
		return false;
	});

	jQuery('#btn-cancel').click(function(e) {
		var path = location.pathname;
		if (path == '/main/' || path == '/1st/')
			systemExit();
		else {
			if (jQuery.cookie('dispMainMenu'))
				location.href = '/main/';
			else
				systemExit();
		}
	});
	
	jQuery('#info-badge').click(function(e) {
		jQuery(this).fadeOut();
	});
	
	jQuery(document).keydown(function(e){
		if (keyDownEscFlag==false) {
			var cd = e.keyCode;
			// return
			if (cd == 13) {
				jQuery('#btn-next').click();
				return false;
			// esc
			} else if (cd == 27) {
				jQuery('#btn-cancel').click();
				return false;
			}
		}
	});
	
	// preload images
	(new Image()).src = "/_modules/images/buttons/btn-cancel_down.png";
	(new Image()).src = "/_modules/images/buttons/btn-cancel_over.png";
	(new Image()).src = "/_modules/images/buttons/btn-next_disabled.png";
	(new Image()).src = "/_modules/images/buttons/btn-next_down.png";
	(new Image()).src = "/_modules/images/buttons/btn-next_over.png";
	(new Image()).src = "/_modules/images/buttons/btn-prev_disabled.png";
	(new Image()).src = "/_modules/images/buttons/btn-prev_down.png";
	(new Image()).src = "/_modules/images/buttons/btn-prev_over.png";
	(new Image()).src = "/_modules/images/buttons/btn-submit_down.png";
	(new Image()).src = "/_modules/images/buttons/btn-submit_over.png";
	(new Image()).src = "/_modules/images/btn-manual_down.png";
	(new Image()).src = "/_modules/images/btn-manual_over.png";
}

function resizeHandler() {
	var hdr = document.getElementById('header').offsetHeight;
	var ttl = document.getElementById('sub_title').offsetHeight;
	var ft = document.getElementById('footer').offsetHeight;
	var wh = jQuery(window).height();
	document.getElementById('contents_body').style.height
					= wh - hdr - ttl - ft - 60;
	var mn = document.getElementById('menu').offsetWidth;
	var ww = jQuery(window).width();
	document.getElementById('contents_body').style.width
					= ww - mn - 60;
	// TODO: menuの高さ調整
}

function parseParam(src) {
	if (src.indexOf('?') == 0) src = src.substring(1);
	var ary = src.split('&');
	var o = {};
	for (var i=0; i<ary.length; i++) {
		var kv = ary[i].split('=');
		o[kv[0]] = kv[1];
	}
	return o;
}

/* ExtJS 拡張*/
Ext.grid.CheckColumn = function(config){
    Ext.apply(this, config);
    if(!this.id){
        this.id = Ext.id();
    }
    this.renderer = this.renderer.createDelegate(this);
};

Ext.grid.CheckColumn.prototype ={
    init : function(grid){
        this.grid = grid;
        this.grid.on('render', function(){
            var view = this.grid.getView();
            view.mainBody.on('mousedown', this.onMouseDown, this);
        }, this);
    },

    onMouseDown : function(e, t){
        if(t.className && t.className.indexOf('x-grid3-cc-'+this.id) != -1){
            e.stopEvent();
            var index = this.grid.getView().findRowIndex(t);
            var record = this.grid.store.getAt(index);
            record.set(this.dataIndex, !record.data[this.dataIndex]);
        }
    },

    renderer : function(v, p, record){
        p.css += ' x-grid3-check-col-td';
        return '<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'">&#160;</div>';
    }
};

/* jsファイル内jsファイルインポート */
function importJS(js) {
	var script = document.createElement("script");
	script.src = js;
	script.type = "text/javascript";
	script.deter = true;
	document.getElementsByTagName("head").item(0).appendChild(script);
}

/* オブジェクトコピー */
function clone(obj) {
	var func = function(){};
	func.prototype = obj;
	return new func;
}

/* validator */
var OK_IMG = '<img src="../_modules/images/form/ok.png" width="15" height="15" />';
var ERR_IMG = '<img src="../_modules/images/form/alert.png" width="14" height="15" />';
var REQUIRED = '入力してください。';

var MAIL_MATCH = '/^[0-9A-Za-z-][+?\/0-9A-Za-z.._-]*@[0-9A-Za-z_-]+[\.]+[0-9A-Za-z_..-]+[A-Za-z]$/';
var URL_MATCH = '/^[0-9a-z_,.:;&=+*%$#!?@()~\'\/-]+$/';

function checkRequired(el, msgId) {
	el = jQuery(el);
	if (el.val().length == 0) {
		jQuery(msgId).html(ERR_IMG + REQUIRED);
		return false;
	} else {
		jQuery(msgId).html(OK_IMG);
		return true;
	}
}

function checkMailAddress(el, msgId) {
	el = jQuery(el);
	if (el.val().length == 0) {
		jQuery(msgId).html('');
	} else if (!el.val().match(eval(MAIL_MATCH))) {
		jQuery(msgId).html(ERR_IMG + "メールアドレスの形式が正しくありません。");
		return false;
	} else {
		jQuery(msgId).html(OK_IMG);
	}
	return true;
}

function checkUrl(el, msgId) {
	el = jQuery(el);
	if (el.val().length == 0) {
		jQuery(msgId).html('');
	} else if (!el.val().match(eval(URL_MATCH))) {
		jQuery(msgId).html(ERR_IMG + "URLの形式が正しくありません。");
		return false;
	} else {
		jQuery(msgId).html(OK_IMG);
	}
	return true;
}

//'/http:\/\/[0-9a-z_,.:;&=+*%$#!?@()~\'\/-]+/i';

function checkEqual(el1, el2, msgId) {
	el1 = jQuery(el1);
	el2 = jQuery(el2);
	if (el1.val() != el2.val()) {
		jQuery(msgId).html(ERR_IMG + "内容が一致しません。");
		return false;
	} else {
		jQuery(msgId).html(OK_IMG);
	}
	return true;
}

/*
 * bufの長さが空でなければ、セパレーターを付けた後に文字列を追加する
 */
function addSep(buf, add) {
	if (buf.length > 0) buf += '、';
	buf += add;
	return buf;
}

