/*--------------
DOMParser for IE and Safari
---------------*/
if (typeof DOMParser == "undefined") {
   DOMParser = function () {}

   DOMParser.prototype.parseFromString = function (str, contentType) {
      if (typeof ActiveXObject != "undefined") {
         var d = new ActiveXObject("MSXML.DomDocument");
         d.loadXML(str);
         return d;
      } else if (typeof XMLHttpRequest != "undefined") {
         var req = new XMLHttpRequest;
         req.open("GET", "data:" + (contentType || "application/xml") +
                         ";charset=utf-8," + encodeURIComponent(str), false);
         if (req.overrideMimeType) {
            req.overrideMimeType(contentType);
         }
         req.send(null);
         return req.responseXML;
      }
   }
}

/*-------------
Date
---------------*/
function getCurrentYear(){
	var today = new Date();
	return today.getFullYear();
}

// mmm2mm('AUG', false) = 8, mmm2mm('AUG', true) = 08, 
function mmm2mm(_mth, _zeroPadding){
	_mth = _mth.toUpperCase(); 
	var mmm = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
	var mm = new Array("1","2","3","4","5","6","7","8","9","10","11","12");
	if(_zeroPadding){
		mm = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
	}
	for(var i=0;i<mmm.length;i++){
		if(mmm[i] == _mth){
			return mm[i];
		}
	}
	return -1;
}
// mmm2mm('JUL') = July
function mmm2MMM(_mth){
	_mth = _mth.toUpperCase(); 
	var mmm = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
	var MMM = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	for(var i=0;i<mmm.length;i++){
		if(mmm[i] == _mth){
			return MMM[i];
		}
	}
	return -1;
}
function mmm2LastDay(_mth, _year){
	_mth = _mth.toUpperCase(); 
	var mmm = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
	var lastDate = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	for(var i=0;i<mmm.length;i++){
		if(mmm[i] == _mth){
			if(mmm[i] == "FEB"){
				if(_year / 4 == 0){
					return "29";
				}else{
					return lastDate[i];
				}
			}else{
				return lastDate[i];
			}
		}
	}
	return -1;
}


function ToDayDiff(yyyy2,mm2,dd2){
	mm2 = mm2 -1;

	var _today = new Date();
	var _date2 = new Date(yyyy2, mm2,dd2);
	
	var one_day=1000*60*60*24;
	
 	if(_today == _date2){
		return 0;
	}else if(_today > _date2){
		return Math.ceil((_today.getTime()-_date2.getTime())/(one_day))
	}else if (_date2 > _today){
		return Math.ceil((_date2.getTime()-_today.getTime())/(one_day))
	} 
}
function DayDiff(yyyy1,mm1,dd1, yyyy2,mm2,dd2){
	var _from = new Date();
	var _to = new Date();

	_from.setYear(yyyy1);
	_from.setMonth(mm1-1);
	_from.setDate(dd1);
	_to.setYear(yyyy2);
	_to.setMonth(mm2-1);
	_to.setDate(dd2);
	
	var one_day=1000*60*60*24;
	
 	if(_from == _to){
		return 0;
	}else if(_from > _to){
		return Math.ceil((_from.getTime()-_to.getTime())/(one_day))
	}else if (_to > _from){
		return Math.ceil((_to.getTime()-_from.getTime())/(one_day))
	} 
}
 

/*-------------
Create Elements
---------------*/
//alert("Create Elements");
//add new option
function addOption(id, text, value) {
    var selectbox = document.getElementById(id);
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;
    selectbox.options.add(optn);
}
//remove all option except the first
function removeOptions(id) {
    var selectbox = document.getElementById(id);
    for (var i = selectbox.options.length - 1; i > 0; i--) {
        selectbox.remove(i);
    }
}
	//add new a
function addHyperLink(id, href) {
    var n = document.getElementById(id);
    var newlink = document.createElement("a");
	newlink.setAttribute('href', href);
    n.addChild(newlink );
}




//	example:
// var newElement = createEl('div',
// 	{'class': 'newDivClass', id: 'newDiv', name: 'newDivName'},
// 	{width: '300px', height:'200px', margin:'0 auto', border:'1px solid #DDD'},
// 	'text');

createEl = function(t, a, y, x) {
    var e = document.createElement(t);
    if (a) {
        for (var k in a) {
            if (k == 'class') e.className = a[k];
            else if (k == 'id') e.id = a[k];
            else e.setAttribute(k, a[k]);
        }
    }
    if (y) { for (var k in y) e.style[k] = y[k]; }
    if (x) { e.appendChild(document.createTextNode(x)); }
    return e;
}


	
	
/*-------------
Event Utility
---------------*/
//alert("Event Utility");
function addEvent(obj, evType, fn){ 
	if (obj.addEventListener){ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} else if (obj.attachEvent){ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}

// 	Cross-browser implementation of element.addEventListener()
//	element - e.g. window
//	type -  e.g. load
//	expression - e.g. myFunction
//	bubbling - 
//	example:
//		addListener(e, 'click', function() {
//			//showPressTbody("pressTbody"+_id.substr(2,4));
//			//showPresentationDiv("presentation"+_id.substr(2,4));
//			showPressTbody(num);
//			showPresentationDiv(num);
//		},false);


function addListener(element, type, expression, bubbling){
	bubbling = bubbling || false;

	if(window.addEventListener) { // Standard
		element.addEventListener(type, expression, bubbling);
		return true;
	} else if(window.attachEvent) { // IE
		element.attachEvent('on' + type, expression);
		return true;
	} else return false;
}
/*-------------
Form Unility
---------------*/
//alert("Form Utility");
function unhideOption(id, value) {
    var selectbox = document.getElementById(id);
    for (var i = 0; i < selectbox.options.length; i++) {
        if (selectbox.options[i].value == value) {
            selectbox.options[i].style.display = "";
            return;
        }
    }
}
function hideOption(id, value) {
    var selectbox = document.getElementById(id);
    for (var i = 0; i < selectbox.options.length; i++) {
        if (selectbox.options[i].value == value) {
            selectbox.options[i].style.display = "none";
            selectbox.selectedIndex = 0;
            return;
        }
    }
}


function checkall(name){
	var box = document.getElementsByTagName(name);
	for (var i = 0; i < box.length; i++){						
		if(box[i].type=="checkbox"){
			box[i].checked=true;
		}
	}
}
function getSpan(n){
	if('textContent' in n) {
		return n.textContent;
	} else if('innerText' in n) {
		return n.innerText;
	} else {
		return n.firstChild.data;
	}
}
function setSpan(n, value){
	var n = this.document.getElementById(n);
	if('textContent' in n) {
		n.textContent = value;
	} else if('innerText' in n) {
		n.innerText = value;
	} else {
		n.firstChild.data = value;
	}
}

function setSpanById(id, value){
	var n = this.document.getElementById(id);
	if('textContent' in n) {
		n.textContent = value;
	} else if('innerText' in n) {
		n.innerText = value;
	} else {
		n.firstChild.data = value;
	}
}
function setSpanByIdWithLang(id, lang, _eng_value, _tc_value, _sc_value){
	var value = "";
	if(lang == "TC"){
		value = _tc_value;
	}else if(lang == "SC"){
		value = _sc_value;
	}else{
		value = _eng_value;
	}

	var e = this.document.getElementById(id);
	if('textContent' in e) {
		e.textContent = value;
	} else if('innerText' in e) {
		e.innerText = value;
	} else {
		e.firstChild.data = value;
	}
}


/* function hide(id){
	var e = document.getElementById(id);
	if(e != null ){
		e.style.display =  "none";
	}
}
function show(id){
	var e = document.getElementById(id);
	if(e != null ){
		e.style.display =  "";
	}
} */
function setDisplayBlockById(id){
	var e = document.getElementById(id);
	if(e != null ){
		e.style.display =  "block";
	}
}
function setDisplayEmptyById(id){
	var e = document.getElementById(id);
	if(e != null ){
		e.style.display =  "";
	}
}
function setDisplayNoneById(id){
	var e = document.getElementById(id);
	if(e != null ){
		e.style.display =  "none";
	}
}

function setClassById(id, _classname){
//alert("_classname:"+_classname);
	var e = document.getElementById(id);
	if(e != null ){
		e.setAttribute("class",_classname);
		e.setAttribute("className",_classname);
		//e.className = _classname;
	}
}




/* function setElementsClass(str, _classname){
	var id = str.split(",");
	for(var i=0;i<id.length;i++){
		setClass(id[i], _classname);
	}
}
function setElementsDisplayBlock(_str){
	var str = _str;
	var id = str.split(",");
	for(var i=0;i<id.length;i++){
		setDisplayBlock(id[i]);
	}
}
function setElementsDisplayNone(_str){
	var str = _str;
	for(var i=0;i<id.length;i++){
		setDisplayNone(id[i]);
	}
} */


/*-------------
XML
---------------*/
//alert("XML");
var xmlhttp;
function getXMLDoc(url){
	xmlhttp = null;
	if (window.XMLHttpRequest){ // code for IE7, Firefox, Opera, etc.
		xmlhttp = new window.XMLHttpRequest();
	}else { // code for IE6, IE5
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}	
	if (xmlhttp!=null){
		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("POST",url,true);
		xmlhttp.send(null);
	}else{
  		alert("Your browser does not support XMLHTTP.");
  	}

}
function stateChanged(){
	if (xmlhttp.readyState==4){
		if (xmlhttp.status==200){ // 200 = "OK"
			var xmlDoc = null;
			if (window.XMLHttpRequest){ // code for IE7, Firefox, Opera, etc.
				parser = new DOMParser();
				xmlDoc = parser.parseFromString(xmlhttp.responseText, "text/xml");
			}else { // code for IE6, IE5
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.async = "false";
				xmlDoc.loadXML(xmlhttp.responseText);
			}	
			display(xmlDoc);
	    }
	  	else{
	  	   	alert("Problem retrieving XML data:" + xmlhttp.statusText);
	    }
	}
}



//alert("End of common.js");
