
/*
	[DUCEDIS] (C)2007-2008 Ducedis.com
    This is a freeware, use is subject to license terms
    Script filename：global.js

    Support: www.ducedis.com

*/

/*
查询字符串中是否存在某字符 
fore = 1 表示字符串开头
*/
var $_find = function ( needle, str, fore ){
	var pos=needle?(str+'').indexOf(needle):-1;
	if (pos!=-1) {
		if(fore==1)
			return pos===0?true:false;

		return true
	}
	return false
}

/*
获取字符串中某字符最后出现处起的字符串, 
length = -1 表示前面到某字符最后出现处的字符串
length > 0 表示某字符最后出现处起的字符串截取 length 个字符
length = undefined||0 表示某字符最后出现处起的字符串
*/
var $_findend = function ( needle, str, length ) {
	var pos=$_find(needle,str)?(str+'').lastIndexOf(needle):-1;
	if ( pos != -1 ) {
		if ( length > 0 )
			return str.substr( pos + needle.length, length );

		if ( length == -1 )
			return str.substr( 0, pos );

		return str.substr( pos + needle.length )
	}
	return str
}

/*截获商店URL地址最后出现"/"起的字符串*/
var $_parseQuery = function ( src ) {
	if(!src) return '';
	return $_findend('/', src).replace(/^(index\.php)?(\?)?/i, '').replace(/%2C/ig, ',').replace(/_ANY_/ig, '')
}

var $_IMGDIR = $_findend('/', $('ducedis_r').src, -1); /*模板图片URL目录*/
var $_INADMIN = parent.SHOPADMINDIR ? true : false;
var $_SHOPBASE = $_IMGDIR.replace(/\/themes\/[a-z0-9_\-]+\/images([\/]+)?$/, '/');
var $_LOCAL = location.href.replace(/%2C/ig, ',');

var $_DUCEDIS = {

	showLogin: function() {
		var login_s = register_s = logout_s = lost_s = logout = register = login = lost = '';
		var uname = Cookie.get('S[UNAME]');
			uname = uname ? '<em>' + uname + '</em>' : '';
		var s = $_CONFIG['lang']['welcome'].replace(/\{username\}/, uname);

		if(!Cookie.get('S[MEMBER]')){
			login='<a href="' + $_SHOPBASE + 'passport-login.html">' + $_CONFIG['lang']['login'] + '</a>';
			register = '<a href="' + $_SHOPBASE + 'passport-signup.html">' + $_CONFIG['lang']['signup'] + '</a>';
			lost = '<a href="' + $_SHOPBASE + 'passport-lost.html" class="lost">' + $_CONFIG['lang']['lost'] + '</a>';
			login_s = $_CONFIG['lang']['login_s'].replace(/\{login\}/, login);
			register_s = $_CONFIG['lang']['signup_s'].replace(/\{register\}/, register);
			lost_s = $_CONFIG['lang']['lost_s'].replace(/\{lost\}/, lost);
		}else{
			logout = '<a href="'+$_SHOPBASE+'passport-logout.html">' + $_CONFIG['lang']['logout'] + '</a>';
			logout_s = $_CONFIG['lang']['logout_s'].replace(/\{logout\}/, logout);
		}
		s = s.replace(/\{register\}/, register)
			.replace(/\{login\}/, login)
			.replace(/\{lost\}/, lost)
			.replace(/\{logout\}/, logout)
			.replace(/\{login_s\}/, login_s)
			.replace(/\{register_s\}/, register_s)
			.replace(/\{lost_s\}/, lost_s)
			.replace(/\{logout_s\}/, logout_s);

		document.write('<cite>'+s+'</cite>')
	},

	addfav: function(){
		if ( document.all )
			window.external.addFavorite($_CONFIG['favlink']['host'], $_CONFIG['favlink']['title']);
		else if ( window.sidebar )
			window.sidebar.addPanel($_CONFIG['favlink']['title'], $_CONFIG['favlink']['host'], "");
	},

	addsitehome: function(){
		var url=$_findend('/', $_LOCAL, -1)+"/";
		if (document.all){
			document.body.style.behavior = 'url(#default#homepage)';
			document.body.setHomePage(url);
		}else if (window.sidebar){
			if (window.netscape){
				try {
					netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				}catch (e) {
					alert("该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config,然后将 signed.applets.codebase_principal_support 值设为true");
				}
			}
			var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
			prefs.setCharPref('browser.startup.homepage', url);
		}
	},
	
	showfav: function(){
		document.write('<a href="javascript:void(0);" onclick="try{$_DUCEDIS.addsitehome();}catch(e){}" class="sitehome">'+$_CONFIG['lang']['sethome']+'</a> <a href="javascript:void(0);" onclick="try{$_DUCEDIS.addfav();}catch(e){}" class="fav">'+$_CONFIG['favlink']['text']+'</a>')
	},
	
	goSearch: function(f){
		f.action = this.searchurl ? this.searchurl : ($_SHOPBASE+'search-result.html')
	},
	
	cartbtn: function(){
		var btns = { 
			account: 'cart.html',
			myorder: 'member-orders.html'
		};
		var s = '';
		for(var k in btns)
			s += '<a href="' + $_SHOPBASE + btns[k] + '" class="cartbtn ' + k + '"></a>';
		document.write(s)
	},
	
	pares:function(url){
		var args = $_parseQuery(url).split('-');
		args[1] = args[1]?args[1]:0;
		if(args[2]){
			if($_find('t,', args[2])){
				args[1] += '-' + args[2].match(/^(.+)?(t,(\d+)?)(.+)?$/)[2];
			}else if($_find('p,', args[2])){
				args[1] = '-' + args[2].match(/^(p((,\d+)+)?)(.+)?$/)[1];
			}
		}
		return args
	},
	
	contrastRequest: function(url){
		if($_parseQuery($_LOCAL) == $_parseQuery(url)){
			return true;
		}
		var rq = this.pares(url);
		if(this.local[0]=='gallery' && rq[0]=='gallery' && this.local[1] == rq[1]){
			return true;
		}else if(!rq[0] && !this.local[0]){
			return true;
		}
		return false
	},

	initHead: function() {

		this.showItemSet = false;
		this.local = this.pares($_LOCAL);

		/*初始化搜索框*/
		var f = $E('#search .SearchBar');
		if ( f ) {
			var f = $E('#search .SearchBar');
			var k = $E('.keywords', f);
			var w = $_CONFIG['lang']['keywords'];
			if(!k.value.trim()) k.value = w;
			k.onfocus = function(){
				if(this.value == w)	this.value = '';
				//this.setStyle('borderColor', '#C00');
			};
			k.onblur = function(){
				//this.setStyle('borderColor', '');
			};
			f.onsubmit = function(){
				if(k.value == w){ MessageBox.error(w + '!!!'); return false;}
			};
			this.searchurl = f.action;
		}
			
		var ms;
		var lis = $E('.menubar').getElements('li');
		if(lis && (ms = lis.length)){
			var mr = lis[0].getStyle('margin-right').toInt();
			var w = $E('.menubar').getSize().x;	w -= (ms - 1)*mr;
			var w1 = (w/ms).round();
			var w2 = w-(ms-1)*w1;
			lis.each(function(li,i){li.setStyle('width',i?w1:w2);});
		}

	},
	
	gallery: function(){
		this.showItemChild()
	},

	/* 初始化左边栏商品分类列表 */
	showItemChild: function(all){
		if(this.showItemSet){
			return;
		}
		return;
		var _this = this;
		this.showItemSet = true;
		
		var cats = $ES('.border_item .c-cat-depth-1');
		if(!cats[0]) return;

		if( !all ) {
			var n;
			if(this.local[0]=='product'){
				this.local = ( n = $ES('.Navigation a') ) && n.length ? this.pares($_parseQuery(n[n.length-1].href)) : this.local;
			}
			all = !this.local[1] ? true : false;
		}

		var config = $_CONFIG['cats']||{};
		var pcats = $$('.priceItem .c-cat-depth-1 a[href]');

		cats.each(function(cat, i){
			var a = $ES('a', cat);
			if($_CONFIG['cats_bg']&&!pcats.contains(a[0])) {
				a[0].className = 'toggle-cat d-cat-' + i;
			}
			var show = all||false;
			if( config[i] ) {
				show = show||$_find(config[i], $_LOCAL)||_this.contrastRequest(a[0].href);
				a[0].href = $_SHOPBASE + config[i];
			}

			if ( show ){
				if ( a[1] )	cat.addClass('cat_current');
			}
			else{
				for ( var ii = 0; ii < a.length; ii++ ) {
					if( $_LOCAL == a[ii].href || _this.contrastRequest(a[ii].href) ){
						a[ii].addClass('now');
						if ( a[1] )	cat.addClass('cat_current');
						break;
					}
				}
			}
			if ( a[1] ) {
				new Element('cite', {
					'title': $_CONFIG['lang'][cat.hasClass('cat_current')?'to_close':'to_open'],
					'events': {
						'click': function(){
							if( this.getParent().hasClass('cat_current') ) {
								this.title = $_CONFIG['lang']['to_open'];
								this.getParent().removeClass('cat_current');
							}else{
								this.title = $_CONFIG['lang']['to_close'];
								this.getParent().addClass('cat_current');
							}
						}
					}
				}).injectBefore(a[0]);
				if ( window.ie6 )
					cat.setStyle('padding-top', '1px');
			}
		});

	},

	setLayout: function(){
		var pagelist;
		if((pagelist = $E('.pagelist'))){
			var localurl = $_parseQuery($_LOCAL);
			var isfaq=$E('.pagelist.faq');
			$ES('a', pagelist).each(function(a){
				if(isfaq && a.getParent().hasClass('cat1')){
					a.getParent().addEvent('click',function(e){e.stop();});
				}
				if(!pagelist.retrieve('current')){
					pagelist.store('current', $_parseQuery(a.href)==localurl ? a.addClass('current') : '');
				}
			});
		}
	},
	
	extend: function(){
		var target = arguments[0] || {}, i = 1, length = arguments.length, options;
		if(typeof target != "object" && typeof target != "function")
			target = {};
		if(length == i){
			target = this;
			--i;
		}
		for ( ; i < length; i++ )
			if ( (options = arguments[i]) != null )
				for ( var name in options ) {
					var src = target[name], copy = options[name];
					if ( target === copy )
						continue;
					if ( copy !== undefined )
						target[ name ] = copy;
				}
		return target;
	}

};

