/*yahoo core js*/
if(typeof YAHOO=="undefined"){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=A[C].split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};

YAHOO.createEl = {
	get : function(sTag, oAttr, sHtml, sAppendType) {
		var el = document.createElement(sTag);
		for (var i in oAttr) { // necessary for each all item
			el[i] = oAttr[i];
		}
		if (sHtml) {
			el.innerHTML = sHtml;
		}
		if(sAppendType){
			this.append(el,sAppendType);
		}
		if(!el.id){
			YAHOO.namespace("util.Dom");
			if(YAHOO.util.Dom.generateId){
				YAHOO.util.Dom.generateId(el);
			}
		}
		return el;
	},
	append : function(dNode,sType){
		switch(sType){
			default :
			case 'head':
				var p = document.getElementsByTagName("head")[0] || document.body;
				p.appendChild(dNode);
				break;
			case 'bodyAbsolute':
				dNode.style.position = 'absolute';
				dNode.style.display = 'none';
			case 'bodyStart':
				document.body.insertBefore(dNode,document.body.childNodes[0]);
				break;
			case 'bodyEnd':
				document.body.appendChild(dNode);
				break;
		}
	},
	remove : function(dNode){
		// Must use setTimeout, otherwise may cause crashes in IE6
		setTimeout(function() {
			dNode.parentNode.removeChild(dNode);
			dNode = null;
		}, 0);
	},
	js : function(sUrl,sCharset){
		 var dNode = this.get("script",{src:sUrl,type:'text/javascript'},null,'head');
		 if(sCharset){
		 	dNode.setAttribute('charset',sCharset);
		 }
		 return dNode;
	},
	css : function(sUrl,sMedia){
		if(!sMedia){sMedia = 'all';}
		return this.get('link',{"href":sUrl,"rel":"stylesheet","type":"text/css","media":sMedia},null,'head');
	}
};


/*JsConnect.js*/
(function(){
YAHOO.namespace('util');
YAHOO.util.JsConnect = {
	seqNo : 0,
	scriptNodeMap : {},
	asyncRequest : function(url, oCallback, sCallbackName, isNotAppendUrl) {
		var sResponseID;
		if(!isNotAppendUrl){
			sResponseID = "response" + this.seqNo;
			this.seqNo++;
			sCallbackName = sCallbackName || "callback";
			if(this.isLive(sResponseID)){
				this.remove(sResponseID);
			}
			// The URL must support a "callback" parameter
			if (url.indexOf('?') === -1) {
				url += "?" + sCallbackName + "=YAHOO.util.JsConnect." + sResponseID;
			} else {
				url += "&" + sCallbackName + "=YAHOO.util.JsConnect." + sResponseID;
			}
		}else{
			sResponseID = "response0";
		}

		// Create response object
		var responseObj = { tId : sResponseID };
		if (oCallback.argument) {
			responseObj.argument = oCallback.argument;
		}

		// Bind the response function
		var timeoutId = null;
		this[sResponseID] = function(str) {
			this.remove(sResponseID);
			if (timeoutId) {
				clearTimeout(timeoutId);
			}
			responseObj.status = 200;
			responseObj.responseText = str;
			if(oCallback.success){
				if (oCallback.scope) {
					oCallback.success.call(oCallback.scope, responseObj);
				} else {
					oCallback.success(responseObj);
				}
			}
		};

		// Setup timeout function
		if (oCallback.timeout) {
			var that = this;
			var timeoutFunc = function() {
				that.abort(sResponseID, oCallback);
			};
			// Set the timeout
			timeoutId = setTimeout(timeoutFunc, oCallback.timeout);
		}

		this.scriptNodeMap[sResponseID] = YAHOO.createEl.js(url);
		return sResponseID;
	},

	isLive : function(sID) {
		return ('undefined'!=typeof(this.scriptNodeMap[sID]));
	},

	remove : function(sID){
		if(this[sID]){
			YAHOO.createEl.remove(this.scriptNodeMap[sID]);
			delete this[sID];
			delete this.scriptNodeMap[sID];
		}
	},

	removeAll : function(){
		for(var i in this.scriptNodeMap){ // necessary for each all item
			this.remove(i);
		}
	},

	abort : function(sID, oCallback) {
		if (this[sID]) {
			this.remove(sID);
			if (oCallback) {
				var responseObj = { tId:sID,status:-1,statusText:"transaction aborted" };
				if (oCallback.argument) {
					responseObj.argument = oCallback.argument;
				}
				if(oCallback.failure){
					if (oCallback.scope) {
						oCallback.failure.call(calback.scope, responseObj);
					} else {
						oCallback.failure(responseObj);
					}
				}
			}
			return true;
		}
		return false;
	}
};
})();


YAHOO.namespace('DCM.util');
var YDcm = YAHOO.DCM;
YDcm.test = (location.href.indexOf('localhost')!=-1||location.href.indexOf('alpha')!=-1||location.href.indexOf('http')==-1);
YDcm.conf = {
	dom : null
};
if(YDcm.test){
	YDcm.conf.dcmServerUrl = 'http://dcmw1.search.corp.tpc.yahoo.com/';
}else{
	YDcm.conf.dcmServerUrl = 'http://tw.dcm.search.yahoo.com/';
}


(function(){
YDcm.style = {
	cssWidth : '',
	cssHeight : '',
	cssBorder:'',
	cssTitle:'',
	cssText:'',
	cssBackground:'',
	cssUrl:'',
	width:'auto',
	height:null,
	genCss : function(){
		return {
			'.ysm':'overflow:hidden;_overflow:visible;word-break:break-all;border:1px solid #97abbc;'+this.cssBorder+'position:relative;font-size:13px;line-height:1.4;margin:5px;padding:1px 5px;'+this.cssWidth+this.cssHeight+this.cssBackground,
			'.ysm *':'cursor:pointer;',
			'.ysm .ysmlabel':'position:absolute;top:2px;right:5px;',
			'.ysm .ysmlabel a':'text-decoration:none;font-size:12px;'+this.cssText,
			'.ysm dl':'zoom:1;text-align:left;margin:0;padding:0 0 6px;*padding:0 0 9px;',
			'.ysm dl.last':'padding-bottom:0;',
			'.ysm dl address':'margin-left:5px;font:normal 12px/1 Arial;'+this.cssUrl,
			'.ysm dt a':this.cssTitle,
			'.ysm dt address':'display:inline;',
			'.ysm dd':'font-size:12px;margin:0;'+this.cssText,
			'.ysm dd address':'display:none;',
			'.ysm-vertical':'*padding-top:5px;',
			'.ysm-vertical .ysmlabel':'position:static;display:block;margin:0 auto;text-align:center;',
			'.ysm-vertical dt address':'display:none;',
			'.ysm-vertical dd address':'display:inline;'
		};
	},
	css : null,
	cssElement :null,
	setCss:function(key,val){
 		var aStyle = this.css;
	 	if(key){
			if (null===val){
				delete aStyle[key];
			}else{
				 aStyle[key] = val;
			}
		}
		if (this.cssElement){
			YAHOO.createEl.remove(this.cssElement);
		}
		var dCss = YAHOO.createEl.get("style",{"type":"text/css","media":"screen"},null,true);
		this.cssElement = dCss;
		var i;
		if (typeof(document.styleSheets[0])!='undefined'&&document.styleSheets[0].addRule) {
			var dStyle = document.styleSheets[document.styleSheets.length-1];
			for (i in aStyle){if(aStyle[i]){dStyle.addRule(i, aStyle[i]);}}
		} else {
			var s = '';
			for (i in aStyle){s += i + ' {' + aStyle[i] + '}\n';} // necessary for each all item
			dCss.appendChild(document.createTextNode(s));
		}
	},
	init:function(){
		if(typeof(yahoo_iframe)=='undefined'){
			yahoo_iframe = true;
		}
		if(yahoo_ad_style){
			YDcm.user = yahoo_ad_style;
		}
		if(YDcm.user.width&&parseInt(YDcm.user.width,10)>0){
			this.width = YDcm.user.width;
			this.cssWidth = 'width:'+this.width+'px;';
		}
		if(YDcm.user.height){
			this.height = YDcm.user.height;
			this.cssHeight = '_height:'+this.height+'px;min-height:'+this.height+'px;';
			if('in'==yahoo_iframe){
				this.height -=4;
				this.cssHeight = '_height:'+this.height+'px;max-height:'+this.height+'px;';
			}
		}
		if(YDcm.user.border){
			this.cssBorder = 'border-color:'+YDcm.user.border+';';
		}
		if(YDcm.user.title){
			this.cssTitle = 'color:'+YDcm.user.title+';';
		}
		if(YDcm.user.text){
			this.cssText = 'color:'+YDcm.user.text+';';
		}
		if(YDcm.user.background){
			this.cssBackground = 'background-color:'+YDcm.user.background+';';
		}
		if(YDcm.user.url){
			this.cssUrl = 'color:'+YDcm.user.url+';';
		}

		this.css = this.genCss();

		if('in'==yahoo_iframe){
			this.css['body']='margin:0;padding:0;';
			this.css['.iframe']='margin:0;';
			this.css['div.ysm'] = 'overflow:hidden;';
		}
		if(YDcm.user.width){
			this.css['dl.first']='margin-top:8px;';
		}
	}
};
YDcm.style.init();
}());


YDcm.util.overture= function(){
	var sRandom = Math.ceil(Math.random()*(new Date().getTime()));
	var dAd;
	//Overture Variable
	var sConfig = '4775832391',
		sSource = 'ov_test',
		sMaxCount = 3,
		sCtxtId = 'tw_default_001',
		sType = '',
		sCharset = '',
		sLogCharset = '',
		sCtxtKeywords = '',
		sReferUrl = '';
	if('undefined'!=typeof(param_partner)){sSource='&source='+encodeURIComponent(param_partner);}
	if('undefined'!=typeof(param_ctxtID)){sCtxtId='&ctxtCat='+encodeURIComponent(param_ctxtID);}
	if('undefined'!=typeof(param_maxCount)&&!isNaN(param_maxCount)){sMaxCount=param_maxCount;}
	if('undefined'!=typeof(param_config)){sConfig=param_config;}
	if('undefined'!=typeof(param_charset)){sCharset='&outputCharEnc='+param_charset;sLogCharset='&eo='+param_charset;}

	var requestOverture = function(s,dTarget){
		dAd = dTarget;
		zSr = undefined;
		if(s.length){
			sCtxtKeywords ='&ctxtKeywords='+ s;
		}else{
			sCtxtKeywords = '';
			param_type='dcm_default';
		}
		sReferUrl = ('in'==yahoo_iframe)?document.referrer:document.URL;
		if(typeof(param_type)!='undefined'){sType='&type='+ encodeURIComponent(param_type);}
		var sUrl = 'http://cmx.tw.yahoo.overture.com/js_flat_1_0/?'+ 'config='+ encodeURIComponent(sConfig)+ sCtxtKeywords+ sCharset+ sSource+ sCtxtId+ '&maxCount='+ encodeURIComponent(sMaxCount)+ sType+ '&cb='+ sRandom+ '&ctxtUrl='+ encodeURIComponent(sReferUrl);
		var dYsmQuery = YAHOO.createEl.js(sUrl);
		var queryYsm = setInterval(function() {
			if(typeof(zSr)!='undefined'){
				clearInterval(queryYsm);
				genHtml(arrange(zSr));
				YAHOO.createEl.remove(dYsmQuery);
			}
		},30);
	};
	var arrange = function(a){
		var aNew = [];
		for(var i=6,j=a.length;i<j;i+=6){
			var aCol = {'desc':a[i],'tmp':a[i+1],'link':a[i+2],'title':a[i+3],'url':a[i+4]};
			aNew.push(aCol);
		}
		return aNew;
	};
	var genHtml = function(a){
		var sHtml='',
			aAtt;
		for(var i=0,j=a.length;i<j;i++){
			sHtml = '<dt><a target="_top" href="'+a[i].link+'">'+a[i].title+'</a><address>'+a[i].url+'</address></dt><dd>'+a[i].desc+'<address>'+a[i].url+'</address></dd>';
			if(0===i){
				aAtt = {'className':'first'};
			}else if(j-1==i){
				aAtt = {'className':'last'};
			}else{
				aAtt = null;
			}
			var dDl = YAHOO.createEl.get('dl',aAtt,sHtml);
			dAd.appendChild(dDl);
			dDl.onmousedown = function(){
				var dLink = this.getElementsByTagName('a')[0];
				var dAddress = this.getElementsByTagName('address')[0];
				var sLogReferUrl=('in'==yahoo_iframe)?'&ctxtUrl='+encodeURIComponent(sReferUrl) : '';
				if (document.images) {
					var sClickLogUrl = YDcm.conf.dcmServerUrl+'click?r='+ sRandom+ sSource+ sCtxtId+ '&displayUrl='+ encodeURIComponent(dAddress.innerHTML)+ '&displayTitle='+  encodeURIComponent(dLink.innerHTML)+ sCtxtKeywords+ sLogCharset+ sLogReferUrl;
					(new Image()).src = sClickLogUrl;
				}
			};
			dDl.onclick = function(){
				var dLink = this.getElementsByTagName('a')[0];
				top.location.href = dLink.href;
			};
		}
		if(j){
			dAd.style.display='';
			/*set callback*/
			if(typeof(yahoo_dcm_done_callback)=='function'){
				yahoo_dcm_done_callback();
			}
		}
	};
	return {
		'request':requestOverture,
		'genHtml':genHtml,
		'sRandom':sRandom,
		'urlParam':sSource+ sCtxtId
	};
}();

(function(){
	if('undefined'==typeof(YDcm.util.JsConnect)){
		YDcm.util.JsConnect = YAHOO.util.JsConnect;
	}
	var ov = YDcm.util.overture;
	var oc = YDcm.util.JsConnect;

	//setup outside keyword, random, sid, sdcmurl
	var sRandom = ov.sRandom,
		sID = 'ydcm-'+sRandom,
		sKeyword = '';
	if('undefined'!=typeof(param_keyword)&&param_keyword.length){sKeyword = '&query='+ encodeURIComponent(param_keyword);}
	var sDcmUrl = 'r='+ sRandom+ sKeyword+ ov.urlParam;

	//test environment
	var sKwUrl,sIframeKwUrl,sCssUrl='';
	if(YDcm.test){
		sKwUrl = 'getkw.php';
		sIframeKwUrl = 'iframe.php';
	}else{
		sKwUrl = YDcm.conf.dcmServerUrl;
		sIframeKwUrl = YDcm.conf.dcmServerUrl+'rw.php';
		sCssUrl = 'http://tw.yimg.com/i/tw/ysm/dcm/';
	}

	if('undefined'==typeof(yahoo_write)){
		 yahoo_write ='write';
	}

	var create = function(type,att,sHtml){ //call form line 434 and line 458, without any outside parameter
		var d;
		switch (type){
			default:
			case 'write':
				document.write('<div id='+att.id+'></div>');
				d = document.getElementById(att.id);
				if(att.className){d.className=att.className;}
				if(sHtml){d.innerHTML=sHtml;}
				break;
			case 'dom':
				d = YAHOO.createEl.get('div',att,sHtml);
				break;
		}
		if(!yahoo_iframe){d.style.display='none';}
		YDcm.conf.dom = d;
		return d;
	};

	var dAd;
	if('in' == yahoo_iframe){
		dAd = document.getElementById('dcm');
		YDcm.util.JsConnect.response0 = function(s){
			ov.request(s[0],dAd);
		};
	} else if(true === yahoo_iframe) {
		dAd = create(yahoo_write,{'id':sID});
		var dIframe = YAHOO.createEl.get('iframe',{frameborder:'no',frameBorder:'no',marginWidth:0,marginHeight:0,border:0,scrolling:'no'});
		var aParam = ['param_ctxtID','param_partner','param_type','param_maxCount'];
		var sQuery = '';
		var i;
		for(i=0,j=aParam.length;i<j;i++){
			if('undefined'!=typeof(window[aParam[i]])){
				sQuery += '&js['+aParam[i]+']='+ encodeURIComponent(window[aParam[i]]);
			}
		}
		for(i in yahoo_ad_style){ //necessary for each all item
			sQuery += '&js[yahoo_ad_style]['+i+']='+ encodeURIComponent(yahoo_ad_style[i]);
		}
		dIframe.src = sIframeKwUrl+'?'+sDcmUrl+ sQuery;
		dIframe.style.width = '100%';
		dIframe.style.height = YDcm.style.height+'px';
		dAd.style.width = YDcm.style.width;
		dAd.style.height = YDcm.style.height+'px';
		dAd.appendChild(dIframe);
		//set callback
		if(typeof(yahoo_dcm_done_callback)=='function'){
			yahoo_dcm_done_callback();
		}
	} else {
		dAd = create(yahoo_write,{'className':'ysm dcm','id':sID},'<span class="ysmlabel"><a target="_blank" href="http://tw.rd.yahoo.com/referurl/evt=41260/*http://tw.emarketing.yahoo.com/ysm/contactus/index.html?o=TW0054&cmp=TW0054">\u520a\u767b\u8d0a\u52a9\u7db2\u7ad9</a></span>');
		oc.asyncRequest(sKwUrl+'?'+sDcmUrl, {
			success: function(e){
				ov.request(e.responseText[0],dAd);
			}
		},0,1);
	}

	//set style
	if(!yahoo_iframe||'in'==yahoo_iframe){
		YDcm.style.setCss();
		if(YDcm.user.css){
			YAHOO.createEl.css(sCssUrl+"dcm_"+YDcm.user.css+".css","screen");
		}
		if (YDcm.user.template){
			dAd.className = [dAd.className, YDcm.user.template].join(' ');
		}
	}
	if(window.console && window.console.firebug){
		console.log('use dcm');
	}
}());

