/*******************************************************************************
* M2.js
*
* @author 29 <29@haojik.com>
* @site http://www.haojik.com/ 
* @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)
* @version 0.1 http://www.8035.com
*******************************************************************************/
$ = function(objid){return document.getElementById(objid);}
var M2 = {};
M2.$ = function(id, obj)
{
	var obj = obj || document;
	return obj.getElementById(id);
}
M2.util = {
	getBrowser : function() {
        var browser = '';
        var ua = navigator.userAgent.toLowerCase();
        if (ua.indexOf("msie") > -1) {
            browser = 'IE';
        } else if (ua.indexOf("gecko") > -1) {
            browser = 'GECKO';
        } else if (ua.indexOf("opera") > -1) {
            browser = 'OPERA';
        }
        return browser;
    },
	html: function(id, value, obj){
		var obj = obj || document;
		obj.getElementById(id).innerHTML = value;
	},
	text: function(id, value, obj){
		var obj = obj || document;
		obj.getElementById(id).innerText = value;
	}
}
M2.style = {
	hasClassName: function(obj, className)
	{
		var myClass = obj.className.split(/\s+/);
		for (var i=0; i<myClass.length; i++)
		{
			if (className==myClass[i])
			{
				return true;
			}
		}
		return false;
	},
	addClassName: function(obj, className)
	{
		if (M2.style.hasClassName(obj, className))
		{
			return ;
		}
		obj.className = obj.className + ' ' + className;
	},
	removeClassName: function(obj, className)
	{
		var tmpClass = [];
		var tmpClassArray = obj.className.split(/\s+/);
		for (var i=0; i<tmpClassArray.length; i++)
		{
			if (className!=tmpClassArray[i])
			{
				tmpClass.push(tmpClassArray[i]);
			}
		}
		obj.className = tmpClass.join(' ');
	}
};
M2.event = {
	add: function( obj, type, fn ) 
	{
		if ( obj.attachEvent )
		{ 
			obj['e'+type+fn] = fn; 
			obj[type+fn] = function(){obj['e'+type+fn]( window.event );} 
			obj.attachEvent( 'on'+type, obj[type+fn] ); 
		}
		else
		{
			obj.addEventListener( type, fn, false ); 
		}
	},
	remove: function( obj, type, fn ) 
	{
		if ( obj.detachEvent )
		{ 
			obj.detachEvent( 'on'+type, obj[type+fn] ); 
			obj[type+fn] = null; 
		}
		else 
		{
			obj.removeEventListener( type, fn, false ); 
		}
	}
}
M2.version = '0.1';
M2.browser = M2.util.getBrowser();
// 以上初始化

// 动态加载script标签内容   
function loadScript(src, callback, charset) {
    var script = document.createElement('script');   
    script.setAttribute('language', 'javascript');   
    if (charset) {   
        script.setAttribute('charset', charset);   
    }   
    script.setAttribute('src', src);   
    document.getElementsByTagName("head")[0].appendChild(script);   
    if(document.all) {   
        script.onreadystatechange = function() {   
            if(this.readyState == 4 || this.readyState == 'complete' || this.readyState == 'loaded') {   
                callback();   
            }
        }
    } else {   
        script.onload = function() {   
            callback();   
        };   
    }   
}  
M2.J29 = function(jTitle, jBox, jTitleClass, jBoxClass, jTitleClassActive, jBoxClassActive, eventType){
	this.version = '0.1';
	var titleActiveClassName = jTitleClassActive || 'active';
	var boxActiveClassName = jBoxClassActive || 'active';
	var eventType = eventType || 'mousemove';
	var tArray = M2.$(jTitle).getElementsByTagName('*');
	var bArray = M2.$(jBox).getElementsByTagName('*');
	var tabTitleA = [];
	var tabBoxA = [];
	// 筛选对应className项 非jTitleClass/jBoxClass 过滤
	for (var i=0; i<tArray.length; i++)
	{
		if (M2.style.hasClassName(tArray[i], jTitleClass))
		{
			tabTitleA.push(tArray[i]);
		}
	}
	for (var i=0; i<bArray.length; i++)
	{
		if (M2.style.hasClassName(bArray[i], jBoxClass))
		{
			tabBoxA.push(bArray[i]);
		}
	}
	if (tabTitleA.length!=tabBoxA.length)
	{
		//alert(tabTitleA.length+'!='+tabBoxA.length);
	}
	
	// 初始化触发事件
	for (var i=0; i<tabTitleA.length; i++)
	{
		M2.event.add(tabTitleA[i], eventType, function(){
			if (this.className==titleActiveClassName) return; // 已经选中 不再触发
			for (var j=0; j < tabTitleA.length; j++)
			{
				if (this==tabTitleA[j])
				{
					//alert(tabBoxA[j]);
					M2.style.addClassName(tabTitleA[j], titleActiveClassName);
					M2.style.addClassName(tabBoxA[j], boxActiveClassName);
				}
				else
				{
					M2.style.removeClassName(tabTitleA[j], titleActiveClassName);
					M2.style.removeClassName(tabBoxA[j], boxActiveClassName);
				}
			}
		});
	}
}
M2.ajax = {
	get:function(url, params, callback)
	{
		var xmlHttp = M2.xmlHttp.create();
		if(typeof(xmlHttp)=='boolean') return false;
		if (typeof(params)=='string')
		{
			url += params.indexOf('?')>0 ? '&' : '?' + params;
		}
		xmlHttp.open('GET', url, false);
		xmlHttp.send(null);
		if (xmlHttp.readyState == 4)
		{ 
			if (xmlHttp.status == 200)
			{ 
				if (callback)
				{
					callback(xmlHttp.responseText)
				}
				else
				{
					return xmlHttp.responseText;
				}
			}
		}
		else
		{
			return xmlHttp.status;
		}
	},
	post:function(url)
	{
	
	}
}

M2.xmlHttp = {
	ajax : function()
	{
		return M2.xmlHttp.create();
	},
	create: function()
	{
		var xmlHttp=false;
		try 
		{ 
		// Firefox, Opera 8.0+, Safari 
			xmlHttp=new XMLHttpRequest(); 
			//if (xmlHttp.overrideMimeType) 
			//{//设置MiME类别
			//	xmlHttp.overrideMimeType("text/xml");
			//}
		} 
		catch (e) 
		{ 
			// Internet Explorer 
			try 
			{ 
				xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
			} 
			catch (e)
			{ 
				try 
				{ 
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
				}
				catch (e) 
				{ 
					xmlHttp = false;
				} 
			}
		}
		return xmlHttp;
	},
	request:function(action, paras)
	{
		
	}
}

M2.loadJs = function(sUrl, fCallback, charset)
{
	var _charset = charset || 'utf-8'
	var _script = document.createElement('script');
	_script.setAttribute('type', 'text/javascript');
	_script.setAttribute('charset', _charset);
	_script.setAttribute('src', sUrl);
	document.getElementsByTagName('head')[0].appendChild(_script);
	
	if (M2.browser=='IE')
	{
		_script.onreadystatechange = function()
		{
			if (this.readyState=='loaded' || this.readyState=='complete')
			{
				fCallback();
			}
		};
	}
	else if (M2.browser=='GECKO' || M2.browser=='OPERA')
	{
		_script.onload = function()
		{
			fCallback();
		};
	}
	else
	{
		fCallback();
	}
}
M2.getcookie = function(name)
{
	var cookie_start = document.cookie.indexOf(name);
	var cookie_end = document.cookie.indexOf(";", cookie_start);
	return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
}
M2.setcookie = function(cookieName, cookieValue, seconds, path, domain, secure) {
	var expires = new Date();
	expires.setTime(expires.getTime() + seconds);
	document.cookie = escape(cookieName) + '=' + escape(cookieValue)
		+ (expires ? '; expires=' + expires.toGMTString() : '')
		+ (path ? '; path=' + path : '/')
		+ (domain ? '; domain=' + domain : '')
		+ (secure ? '; secure' : '');
}
// 轮播效果
M2.lunbo = function(jTitle, jBox, jTitleClass, jBoxClass, jTitleClassActive, jBoxClassActive, eventType, autorun, speed){
	this.version = '0.1.1';
	var titleActiveClassName = jTitleClassActive || 'active';
	var boxActiveClassName = jBoxClassActive || 'active';
	var autorun = autorun || false;
	var speed = speed || 3000;
	var eventType = eventType || 'mousemove';
	var tArray = M2.$(jTitle).getElementsByTagName('*');
	var bArray = M2.$(jBox).getElementsByTagName('*');
	var tabTitleA = [];
	var tabBoxA = [];
	// 筛选对应className项 非jTitleClass/jBoxClass 过滤
	for (var i=0; i<tArray.length; i++)
	{
		if (M2.style.hasClassName(tArray[i], jTitleClass))
		{
			tabTitleA.push(tArray[i]);
		}
	}
	for (var i=0; i<bArray.length; i++)
	{
		if (M2.style.hasClassName(bArray[i], jBoxClass))
		{
			tabBoxA.push(bArray[i]);
		}
	}
	if (tabTitleA.length!=tabBoxA.length)
	{
		//alert(tabTitleA.length+'!='+tabBoxA.length);
	}
	
	// 初始化触发事件
	for (var i=0; i<tabTitleA.length; i++)
	{
		M2.event.add(tabTitleA[i], eventType, function(){
			if (autorun!=false)
			{
				clearInterval(myMar);
			}
			if (this.className==titleActiveClassName) return; // 已经选中 不再触发
			for (var j=0; j < tabTitleA.length; j++)
			{
				if (this==tabTitleA[j])
				{
					M2.style.addClassName(tabTitleA[j], titleActiveClassName);
					M2.style.addClassName(tabBoxA[j], boxActiveClassName);
					if (autorun!=false)
					{
						currentId = j;
					}
				}
				else
				{
					M2.style.removeClassName(tabTitleA[j], titleActiveClassName);
					M2.style.removeClassName(tabBoxA[j], boxActiveClassName);
				}
			}
		});
		M2.event.add(tabTitleA[i], 'mouseout', function(){
			if (autorun!=false)
			{
				myMar = setInterval(run, speed)
			}
		});
	}
	if(autorun!=false)
	{
		var currentId = 1;
		var run = function(){
			if(currentId>tabBoxA.length)
			{
				currentId = 1;
			}
			for (var j=0; j < tabTitleA.length; j++)
			{
				if (currentId-1==j)
				{
					//alert(tabBoxA[j]);
					M2.style.addClassName(tabTitleA[j], titleActiveClassName);
					M2.style.addClassName(tabBoxA[j], boxActiveClassName);
				}
				else
				{
					M2.style.removeClassName(tabTitleA[j], titleActiveClassName);
					M2.style.removeClassName(tabBoxA[j], boxActiveClassName);
				}
			}
			currentId++;
		}
		var myMar = setInterval(run, speed);
	}
}

