/**
 * @author languid -- http://zyx.lsvking.com
 */

var zybox = window.zybox || {
	jQuery:{
		/* @param {Object} options
		 * Simple paging, need basic html
		 * 6 options must be request ,
		 * new paging({		
		 * 		item :'#paging',    		paging element must be <ul>
		 *		many: 15,					Each page should show the quantity
		 *		current :'current',			paging nav.current 
		 *		list:'div.lightBoxWrap',	pagen items
		 *	    pre:'#pre',					prev btn element
		 *		next:'#next'				next btn element
		 *	});
		 *
		 * paging navigate 
		 * <ul id="paging">
		 * 	<li><span id="pre">prev</span></li>
		 * 	<li><span id="next">next</span></li>
		 * </ul>
		 * 
		 */
		Paging :function(options){
			//some options are required
		    var d = options || {},m = d.many || 0,l = $(d.list),cu = options.current,n = Math.ceil(l.size()/m),t = $(options.item),ht = '',c = 0;
		    //initialization , hide all the other items
			_(0);		
		    for(var i=0;i<n;i++){
		       ht+='<li><a href="#" title="'+(i+1)+'">'+(i+1)+'</a></li>';
		    }
		    t.find('li').eq(0).after(ht); var a = t.find('a').eq(0).addClass(cu).end();
		    a.each(function(index){
		       var $this = $(this);
		       $(this).click(function(){
		           _(index);
		           a.removeClass(cu);
		           c = $this.addClass(cu).text()*1-1;
				   return false;
		       })
		    });
		    $(options.pre).click(function(){ if(c==0){}else{_(--c); __(c) };return false;});
		    $(options.next).click(function(){if(c==(n-1)){}else{_(++c); __(c)};return false;});
			//Setting where should be shown, where should be hidden
		    function _(index){ l.css('display','none').slice(m*(index),m*(index+1)).css('display','block'); return false; }
		   	//Setting which should be current
		    function __(index){ a.removeClass(cu).eq(index).addClass(cu); return false; }
		},
		/* @param {Object} options
			 * simple Tabs switch
			 * example:
			 * ToggleBar({
			 * 		handle: 'ul.toggleHandleOne li',
			 *  	handleClass: 'newxinwentit1',
			 *  	handleCurrentClass: 'newxinwentit2'
			 *  	toggleItem: '.toggleListOne'
			 * });
			 * 
			 */
			ToggleBar: function(options){
	            var o = options || {}, $h = $(o.handle), $c = o.handleClass, $cu = o.handleCurrentClass, $l = $(o.toggleItem).eq(0).css('display', 'block').end();
	            $h.each(function(index){
	                var $t = $(this);
	                $t.mouseover(function(){
	                    $h.removeClass($cu).addClass($c);
	                    $t.addClass($cu);
	                    $l.css('display', 'none');
	                    $l.eq(index).css('display', 'block');
	                })
	            })
	        }	
	}
}

//HardCode!! 
var global = {
	/* @param {Object} options
	 * For Index page
	 * According to the options.language
	 */
	index:function(o){
		this.header(o)
	},
	header:function(o){
		var lan = o.language;
		if(lan=='en'){
			
		}else if(lan=='cn'){
			var ddl = $('#drop-down-list') , tolay,
			layz = function(){
				if(tolay){
					clearTimeout(tolay)
				}
				tolay = setTimeout(function(){
					ddl.slideUp();
				},1000)
			}
			$('span#drop-down-btn,#drop-down-list').mouseenter(function(){
				if(tolay){
					clearTimeout(tolay);
				}
				ddl.slideDown('fast');
			}).mouseout(function(){
				if(tolay){
					clearTimeout(tolay);
				}
				layz();
			});
			$(document).click(function(){
				ddl.slideUp();
			})
		}
	},
	/* for All Page, in Navigation
	 * Options must be request
	 * options:{
	 * 		belongTo: '2|1|3',   Main-Navigation , Sub-Navigation , 3-levle-Navigation 
     *      pageType: 'article', Page Type, Web page tag
     *      language: 'en',		 Page language
	 * }
	 */
	page:function(options){
		var o = options, belong = o.belongTo.split('|'), mNav = $('#navigate li'), sNav = $('ul.subnav>li') , pageType = o.pageTpe , $colImg = $('#column-img'), lan = o.language ;
		mNav.eq(mNav.size()-belong[0]).addClass('current');
		
		var levelOne = mNav.eq(mNav.size()-belong[0]).find('a span');
		var levelTwo = sNav.eq(belong[1]).children('a').find('span');
		var levelThree = sNav.eq(belong[1]).find('a').eq(belong[2]);
		
		if((belong.length==3 && !sNav.eq(belong[1]).find('ul.level-nav').eq(belong[2]-1)[0]) || belong.length==2){
			sNav.eq(belong[1]).addClass('no-level-nav play');
		}
		if(belong.length==2 && sNav.eq(belong[1]).find('ul.level-nav')[0]){
			sNav.eq(belong[1]).addClass('current').find('ul.level-nav').show()
		}
		if(belong.length==3){
			sNav.eq(belong[1]).has('ul.level-nav').addClass('current').find('ul.level-nav').show().find('a').eq(belong[2]-1).addClass('current');
		}
		if(belong[0])
		/* animate for .sub-nav */
		sNav.slice(1,sNav.size()-1).hover(function(){
			var self = $(this);
			self.addClass('no-level-nav')
		},function(){
			var self = $(this);
			if(!self.hasClass('play')){
				self.removeClass('no-level-nav')
			}
		}).find('a.has-sub-nav').click(function(event){
			sNav.removeClass('no-level-nav').removeClass('play')
			var self = $(this).parent();
			if(!self.hasClass('current')){
				self.has('ul.level-nav').addClass('current').find('ul.level-nav').slideDown();
			}else{
				self.has('ul.level-nav').find('ul.level-nav').slideUp("normal",function(){
					self.removeClass('current')
				});
			}
			event.stopPropagation();
			if(self.attr('needTurn')=='true'){
				return true;
			}
			return false;
		});
		// !! Set All page head , according to the o.belongTo !!
		var headImg ={
			en:['vision-en.jpg','softe-ware-en.jpg','IR-en.jpg','new-events-en.jpg','About-us-en.jpg'],
			cn:['vision-cn.jpg','softe-ware-cn.jpg','news-events-cn.jpg','aboout-yaxin-cn.jpg']
		}
		$colImg.attr({
			src:'/images/'+(headImg[lan][belong[0]-1]?headImg[lan][belong[0]-1]:'aboout-yaxin-cn.jpg'),
			alt:mNav.eq(mNav.size()-belong[0]).text()
		});
		
		//!! Set All page Title but index , according to the .belongTo !!
		var	title = levelThree[0]?levelThree.text()+'-':'';
			title += levelTwo[0]?levelTwo.text()+'-':'';
		 	title += levelOne[0]?levelOne.text()+'-'+ (lan=='en'?'Asiainfo-Linkage':'亚信联创'):'';
		document.title  = title;
		
	},
	/*
	 * Check the list page , if page link href=^http:// , addClass .error
	 */
	debug:function(){
		var it = $('ul#article-list li a');
		it.each(function(index){
			var self = $(this);
			if(self.attr('href').search('http://')!=-1){
				self.addClass('error');
				self.attr('target','_blank')
				self.html(self.text()+'<span style="margin-left:20px;color:#F00"> undone!!</span>')
			}
		})
	},
	floding:function(o){
		var handle = $('#need-floding > li > span.fb').css('cursor','pointer'), floditem = $('#need-floding > li > ul');
		handle.toggle(function(){
			$(this).parent().addClass('close')
			$(this).next().slideDown();
		},function(){
			$(this).parent().removeClass('close')
			$(this).next().slideUp();
		})
	},
	/* @param {Object} options
	 * options.language, en || cn
	 */
	creatGoBackBtn:function(o){
		var text = o.language=='en'?'back':'返回';
		$('.content').append('<p class="go-back"><a class="fr" href="#" id="go-back">'+text+'</a></p>')
	},
	/* @param {Object} options
	 * For all Article Page,
	 * Call global.page Method
	 */
	article:function(o){
		this.page(o);
		this.header(o);
		this.creatGoBackBtn(o);
		if(o.require){
			for(var i in o.require){
				if(this[o.require[i]]){
					this[o.require[i]]();
				}
			}
		}
	},
	/* @param {Object} options
	 * For all List page,
	 * Call globle.page Method and require zybox.jquery.Paging Method! 
	 */
	list:function(o){
		this.page(o);
		zybox.jQuery.Paging({
			item:"#paging",
			many: 10,
			current :'current',
			list:'ul#article-list li',
			pre:'#prev',
			next:'#next'
		});
		//this.debug();
		this.header(o)
	},
	/* @param {Object} options
	 * For All news page
	 */
	news:function(o){
		this.page(o);
		this.header(o);
		this.creatGoBackBtn(o);
	}
}

