if(typeof com == "undefined") var com = new Object();
if(typeof com.deconcept == "undefined") com.deconcept = new Object();
if(typeof com.deconcept.util == "undefined") com.deconcept.util = new Object();
if(typeof com.deconcept.FlashObjectUtil == "undefined") com.deconcept.FlashObjectUtil = new Object();
com.deconcept.FlashObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
  if (!document.createElement || !document.getElementById) return;
  this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
  this.skipDetect = com.deconcept.util.getRequestParameter(this.DETECT_KEY);
  this.params = new Object();
  this.variables = new Object();
  this.attributes = new Array();
  this.useExpressInstall = useExpressInstall;

  if(swf) this.setAttribute('swf', swf);
  if(id) this.setAttribute('id', id);
  if(w) this.setAttribute('width', w);
  if(h) this.setAttribute('height', h);
  if(ver) this.setAttribute('version', new com.deconcept.PlayerVersion(ver.toString().split(".")));
  this.installedVer = com.deconcept.FlashObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
  if(c) this.addParam('bgcolor', c);
  var q = quality ? quality : 'high';
  this.addParam('quality', q);
  var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
  this.setAttribute('xiRedirectUrl', xir);
  this.setAttribute('redirectUrl', '');
  if(redirectUrl) this.setAttribute('redirectUrl', redirectUrl);
}
com.deconcept.FlashObject.prototype = {
  setAttribute: function(name, value){
    this.attributes[name] = value;
  },
  getAttribute: function(name){
    return this.attributes[name];
  },
  addParam: function(name, value){
    this.params[name] = value;
  },
  getParams: function(){
    return this.params;
  },
  addVariable: function(name, value){
    this.variables[name] = value;
  },
  getVariable: function(name){
    return this.variables[name];
  },
  getVariables: function(){
    return this.variables;
  },
  createParamTag: function(n, v){
    var p = document.createElement('param');
    p.setAttribute('name', n);
    p.setAttribute('value', v);
    return p;
  },
  getVariablePairs: function(){
    var variablePairs = new Array();
    var key;
    var variables = this.getVariables();
    for(key in variables){
      variablePairs.push(key +"="+ variables[key]);
    }
    return variablePairs;
  },
  getFlashHTML: function() {
    var flashNode = "";
    if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
      if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");
      flashNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
      flashNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
      var params = this.getParams();
       for(var key in params){ flashNode += [key] +'="'+ params[key] +'" '; }
      var pairs = this.getVariablePairs().join("&");
       if (pairs.length > 0){ flashNode += 'flashvars="'+ pairs +'"'; }
      flashNode += '/>';
    } else { // PC IE
      if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");
      flashNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
      flashNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
      var params = this.getParams();
      for(var key in params) {
       flashNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
      }
      var pairs = this.getVariablePairs().join("&");
      if(pairs.length > 0) {flashNode += '<param name="flashvars" value="'+ pairs +'" />';}
      flashNode += "</object>";
    }
    return flashNode;
  },
  write: function(elementId){
    if(this.useExpressInstall) {
     
      var expressInstallReqVer = new com.deconcept.PlayerVersion([6,0,65]);
      if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
        this.setAttribute('doExpressInstall', true);
        this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
        document.title = document.title.slice(0, 47) + " - Flash Player Installation";
        this.addVariable("MMdoctitle", document.title);
      }
    } else {
      this.setAttribute('doExpressInstall', false);
    }
    if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
      var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
      n.innerHTML = this.getFlashHTML();
    }else{
      if(this.getAttribute('redirectUrl') != "") {
        document.location.replace(this.getAttribute('redirectUrl'));
      }
    }
  }
}


com.deconcept.FlashObjectUtil.getPlayerVersion = function(reqVer, xiInstall){
  var PlayerVersion = new com.deconcept.PlayerVersion(0,0,0);
  if(navigator.plugins && navigator.mimeTypes.length){
    var x = navigator.plugins["Shockwave Flash"];
    if(x && x.description) {
      PlayerVersion = new com.deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
    }
  }else{
    try{
      var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
      for (var i=3; axo!=null; i++) {
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
        PlayerVersion = new com.deconcept.PlayerVersion([i,0,0]);
      }
    }catch(e){}
    if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; 
    if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {
      try{
        PlayerVersion = new com.deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
      }catch(e){}
    }
  }
  return PlayerVersion;
}
com.deconcept.PlayerVersion = function(arrVersion){
  this.major = parseInt(arrVersion[0]) || 0;
  this.minor = parseInt(arrVersion[1]) || 0;
  this.rev = parseInt(arrVersion[2]) || 0;
}
com.deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
  if(this.major < fv.major) return false;
  if(this.major > fv.major) return true;
  if(this.minor < fv.minor) return false;
  if(this.minor > fv.minor) return true;
  if(this.rev < fv.rev) return false;
  return true;
}

com.deconcept.util = {
  getRequestParameter: function(param){
    var q = document.location.search || document.location.hash;
    if(q){
      var startIndex = q.indexOf(param +"=");
      var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
      if (q.length > 1 && startIndex > -1) {
        return q.substring(q.indexOf("=", startIndex)+1, endIndex);
      }
    }
    return "";
  }
}


if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}


var getQueryParamValue = com.deconcept.util.getRequestParameter;
var FlashObject = com.deconcept.FlashObject;


//設定字體大小---------------------------------------------------------------------------
	function setActiveStyleSheet(title, cat) {
	  var i, a, main,s,p;
	  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
	    if(a.getAttribute("cat")==cat && a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
	      s=a.getAttribute("title");
	      p= document.getElementById(s+"P");
		  if(p!=null){
	    	  p.src=getPicName(s)+".gif";
	    	  a.disabled = true;
	    	   if(a.getAttribute("cat")==cat &&  a.getAttribute("title") == title){
	    	  	  a.disabled = false;
	    	  	  p.setAttribute("src", getPicName(s)+"_.gif");
	    	   }
	      }
	    }
	  }
	  setActiveStyle(title, cat);
	}

	function getPicName(cat) {
		var p="";
	    if(cat=="small") p= "/images/fontsize_s";	 
	    if(cat=="medium") p= "/images/fontsize_m";	 
	    if(cat=="large") p= "/images/fontsize_b";	
	    return p;
	}


	function setActiveStyle(title, cat) {
	  var i, a;
	  for(i=0; (a = document.getElementsByTagName("a")[i]); i++) {
	    if(a.getAttribute("cat")==cat && a.getAttribute("id")) {
	      if(a.getAttribute("id") == title) {
		    a.setAttribute("class", "here"); 
			//a.disabled = false;
		  }
		  else {
		    a.setAttribute("class", ""); 
	        //a.disabled = true;
		  }
	    }
	  }
	  for(i=0; (a = document.getElementsByTagName("select")[i]); i++) {
	    if(a.getAttribute("cat")==cat) {
			var options = a.options

		    for (i=0; i < options.length; i++) {
		        if (options[i].value==title)
					options[i].selected = true;
		    }
	    }
	  }
	}

	function getActiveStyleSheet(cat) {
	  var i, a;
	  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
	    if(a.getAttribute("cat")==cat && a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
	  }
	  return null;
	}

	function getPreferredStyleSheet(cat) {
	  var i, a;
	  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
	    if(a.getAttribute("cat")==cat && a.getAttribute("rel").indexOf("style") != -1
	       && a.getAttribute("rel").indexOf("alt") == -1
	       && a.getAttribute("title")
	       ) return a.getAttribute("title");
	  }
	  return null;
	}

	function createCookie(name,value,days) {
	  if (days) {
	    var date = new Date();
	    date.setTime(date.getTime()+(days*24*60*60*1000));
	    var expires = "; expires="+date.toGMTString();
	  }
	  else expires = "";
	  document.cookie = name+"="+value+expires+"; path=/";
	}

	function readCookie(name) {
	  var nameEQ = name + "=";
	  var ca = document.cookie.split(';');
	  for(var i=0;i < ca.length;i++) {
	    var c = ca[i];
	    while (c.charAt(0)==' ') c = c.substring(1,c.length);
	    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	  }
	  return null;
	}

	function setAllStyleCat() {
		var i, a;
		for(i=0; (a = document.getElementsByTagName("styleSwitcher")[i]); i++) {
			if(a.getAttribute("cat")) {
				var cookie = readCookie(a.getAttribute("cat"));
				var title = cookie ? cookie : getPreferredStyleSheet(a.getAttribute("cat"));
				setActiveStyleSheet(title, a.getAttribute("cat"));
			}
		}
	}

	function createAllStyleCatCookie() {
		var i, a;
		for(i=0; (a = document.getElementsByTagName("styleSwitcher")[i]); i++) {
			if(a.getAttribute("cat")) {
				var title = getActiveStyleSheet(a.getAttribute("cat"));
				createCookie(a.getAttribute("cat"), title, 365);
			}
		}
	}

	window.onload = function(e) {
		setAllStyleCat();
		mladdevents();
	  var cookie = readCookie("style");
	  var title = cookie ? cookie : getPreferredStyleSheet();
	  setActiveStyleSheet(title);
	  
	}

	window.onunload = function(e) {
		createAllStyleCatCookie();
	  var title = getActiveStyleSheet();
	  createCookie("style", title, 365);
	}
	setAllStyleCat();
	var cookie = readCookie("style");
	//alert("cookie="+cookie);
	var title = cookie ? cookie : getPreferredStyleSheet();
	setActiveStyleSheet(title);


	//add by mezi END
	function mladdevents(){
		if(window.mlrunShim == true){
			var Iframe = document.createElement("iframe");
			Iframe.setAttribute("src","about:blank");
			Iframe.setAttribute("scrolling","no");
			Iframe.setAttribute("frameBorder","0");
			Iframe.style.zIndex = "2";
			Iframe.style.filter = 'alpha(opacity=0)';
		}
		var effects_a = new Array();
		var divs = document.getElementsByTagName('div');
		for(var j=0;j<divs.length;j++){
			if(divs[j].className.indexOf('mlmenu') != -1){
				var lis = divs[j].getElementsByTagName('li');
				for(var i =0;i<lis.length;i++){
					
					//add by mezi
					lis[i].firstChild.onfocus = kmlover;
					lis[i].firstChild.onblur = getFromElementForK;							
					// add by mezi end
					
					lis[i].onmouseover = mlover;
					lis[i].onmouseout = mloutSetTimeout;
					
					if(window.mlrunShim == true){
						lis[i].appendChild(Iframe.cloneNode(false));
					}
					if(lis[i].getElementsByTagName('ul').length > 0){
						lis[i].className += 'haschild';
						if(divs[j].className.indexOf('arrow') != -1){
							if(divs[j].className.indexOf('vertical') != -1 || lis[i].parentNode.parentNode.nodeName != 'DIV'){
								lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="vert"> <img src="/xslGip/xslExport/1/20071025_CH/images/menu_icon2.gif" /> </span>';
							}
							else{
							 	lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="horiz">&darr;</span>';
							}
						}
						else if(divs[j].className.indexOf('plus') != -1){
							lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="plus">+</span>';
						}
					}
					else{
						if(divs[j].className.indexOf('arrow') != -1){
							//This accounts for a wierd IE-specific bug in horizontal menus. CSS will set visibility: hidden;. This keeps the menu level(in IE)
							//lis[i].getElementsByTagName('a')[0].innerHTML += '<span class="noshow">&darr;</span>';
						}
					}
					var uls = lis[i].getElementsByTagName('ul');
					for(var k=0;k<uls.length;k++){
						var found = 'no';
						for(var z=0;z<effects_a.length;z++){
							if(effects_a[z] == uls[k]){
								found = 'yes';
							}
						}
						if(found == 'no'){
							effects_a[effects_a.length] = uls[k];
							uls[k].style.zIndex = '100';
							mlEffectLoad(uls[k]);
						}
					}
				}
			}
		}
	}
	
