function MakeScriptTag(object) {
	var returnString = ''
		+ '<script src="http://www.clocklink.com/embed.js"></script>'
		+ '<script type="text/javascript" language="JavaScript">'
		+ MakeScript( object )
		+ '</script>';
	
	return returnString;
}

function MakeScript(object) {
	var returnString = ''
		+ 'obj=new Object;'
		+ 'obj.clockfile="' + object.clockfile + '";'
		+ 'obj.TimeZone="' + object.TimeZone + '";'
		+ 'obj.width=' + object.width + ';'
		+ 'obj.height=' + object.height + ';'
		+ _getObjProp(object)
		+ 'obj.wmode="transparent";'
		+ 'showClock(obj);';
	
	return returnString;
}

function _getObjProp(obj){
	var str="";
	for( prop in obj ) {
		if( 'clockfile' == prop 
			|| 'TimeZone' == prop
			|| 'width' == prop
			|| 'height' == prop
			|| 'wmode' == prop
			|| 'type' == prop
		) continue;
		
		//Added by takeshi on 2007/01/29 (to display mutibyte chars by using URL encoding)
		if(prop == "Title" || prop == "Message"){
			str += 'obj.' + prop + '="' + Form.Element.serialize(prop).split("=")[1] + '";';
		}
		else{
			str += 'obj.' + prop + '=' + '"' + obj[prop] + '";';
		}
		//--

	}
	return str;
}

function getEmbedTag(obj){
	
	var val = "";
	var str = '<embed src="http://www.clocklink.com/clocks/'
		+ obj.clockfile;
	str += "?";
		
	for( prop in obj ) {
		if( 'clockfile' == prop 
			|| 'width' == prop
			|| 'height' == prop
			|| 'wmode' == prop
			|| 'type' == prop
		) continue;
		
		//Added by takeshi on 2007/01/29 (to display mutibyte chars by using URL encoding)
		if(prop == "Title" || prop == "Message"){
			str += prop + "=" + Form.Element.serialize(prop).split("=")[1] + "&";
		}
		else{
			str += ( prop + "=" + _escape(obj[prop]) + "&" );
		}
		//--

	}
	str += '" ';
	str += ' width="' + obj.width + '"';
	str += ' height="' + obj.height + '"';
	str += ' wmode="transparent"';
	str += ' type="application/x-shockwave-flash">';
	
	return str;
}

function _escape(str){
	if(str == undefined) return '';
	str = str.replace(/ /g, '+');
	str = str.replace(/%/g, '%25');
	str = str.replace(/\?/, '%3F');
	str = str.replace(/&/, '%26');
	return str;
}

var flag_city = '';

function isHex(s_id, e_id){
	for(i=s_id; i<e_id; i++){
		if(isNaN($F('FontColor').charAt(i))){
			switch($F('FontColor').charAt(i).toUpperCase()){
				case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
					break;
				default:
					return false;
			}
		}
				
	}
	return true;
}

var global_target_element;
var global_response_type;

function sendRequest(url, target_element, response_type) {
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari, etc.
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
    http_request.target_element = target_element;
    http_request.response_type = response_type;
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
    global_target_element = target_element;
    global_response_type = response_type;
  }

  if (!http_request) {
    alert('Giving up :( Cannot create an XMLHTTP instance');
    return false;
  }

  http_request.onreadystatechange = function() { handleResponse(http_request); };
  http_request.open('GET', url, true);
  http_request.send(null);
}

function handleResponse(http_request) {
  if (http_request.readyState == 4) {
    if (http_request.status == 200) {
      if (http_request.response_type) {
        response_type  = http_request.response_type;
        target_element = http_request.target_element;
      } else {
        response_type  = global_response_type;
        target_element = global_target_element;
      }
      switch (response_type) {
        case "option": // list of cities is returned
	    responses = http_request.responseText.split('|');
          select = document.getElementById(target_element);
          select.options.length = 0;
          if (responses.length < 2) {
            select.options[0] = new Option("No City Available", "NA", true, false);
          } else {
	    selected_flag = false;
            if (responses[0] == myGetCookie('city_selection'))  selected_flag = true;
            select.options[0] = new Option(responses[1], responses[0], selected_flag, selected_flag);
            for (var i = 2; i < responses.length; i += 2){
	      selected_flag = false;
              if (responses[i] == myGetCookie('city_selection'))  selected_flag = true;
              select.options[i/2] = new Option(responses[i+1], responses[i], selected_flag, selected_flag);
            }
          }
          break;
	  /*  // The following case might be used in the future for City Search
        case "value": // response is returned by "Search by City" request
          responses = http_request.responseText.split('|');
          select = document.getElementById(target_element);
          select.options.length = 0;
          if (responses.length < 2) {
	      alert("No City is found. Sorry.");
          } else {
	    for(var i = 0; i < document.getElementById('country').options.length; i++) {
	      if (document.getElementById('country').options[i].value == responses[0]) {
		document.getElementById('country').options[i].selected = true;
	      }
	    }
	    // fill the city dropdown list
            for (var i = 0; i < responses.length/2; i++){
	      selected_flag = false;
	      if (responses[i*2+2] == responses[1]) {
		  selected_flag = true;
	      }
              select.options[i] = new Option(responses[i*2+3], responses[i*2+2], selected_flag, selected_flag);
            }
          }
          break;
	  */
        default:
          break;
      }
      update();
    } else {
      alert('Response error code: ' + http_request.status);
    }
  }
}

function showDiv(divID) {
  var show_div = document.getElementById(divID);
  show_div.style.display = '';
}
function hideDiv(divID) {
  var hide_div = document.getElementById(divID);
  hide_div.style.display = 'none';
}

function mySetCookie(myCookie,myValue,myDay){
   myExp = new Date();
   myExp.setTime(myExp.getTime()+(myDay*24*60*60*1000));
   myItem = "@" + myCookie + "=" + escape(myValue) + ";";
   myExpires = "expires="+myExp.toGMTString();
   document.cookie =  myItem + myExpires;
}

function myGetCookie(myCookie){
   myCookie = "@" + myCookie + "=";
   myValue = null;
   myStr = document.cookie + ";" ;
   myOfst = myStr.indexOf(myCookie);
   if (myOfst != -1){
      myStart = myOfst + myCookie.length;
      myEnd   = myStr.indexOf(";" , myStart);
      myValue = unescape(myStr.substring(myStart,myEnd));
   }
   return myValue;
}

function timeOptionSelected(option) {
  if (option == 'timezone') {
    showDiv('timezone_select');
    hideDiv('country_city_select');
  } else if (option == 'city') {
    showDiv('country_city_select');
    hideDiv('timezone_select');
  }
  update();
}

function getCookieValues() {
  time_select_option = myGetCookie('time_select_option');
  if (time_select_option == 'city') {
    document.getElementById('radio_city').checked = true;
  } else {
    time_select_option = 'timezone';
    document.getElementById('radio_timezone').checked = true;
  }
  timeOptionSelected(time_select_option);

  // get country and timezone values selected previously from a cookie
  // if no values in a cookie, choose a country and timezone depending on language

  var country_value = myGetCookie('country_selection');
  if (country_value == null || country_value == "") {
    if ($F('locale') == "ja_JP") {
      country_value = "Japan";
    } else if ($F('locale') == "en_US") {
      country_value = "USA";
    } else if ($F('locale') == "zh_CN") {
      country_value = "China";
    }
  }
  for (i = 0; i < document.getElementById('country').options.length; i++) {
    if (document.getElementById('country').options[i].value == country_value) {
      document.getElementById('country').options[i].selected = true;
      break;
    }
  }
  sendRequest('./getCities.php?country_tag='+country_value, 'city', 'option');

  var timezone_value = myGetCookie('timezone_selection');
  if (timezone_value == null || timezone_value == "") {
    if ($F('locale')=="ja_JP") {
      timezone_value = "JST";
    } else if ($F('locale')=="en_US") {
      timezone_value = "PST";
    } else if ($F('locale')=="zh_CN") {
      timezone_value = "CCT";
    }
  }
  for (i = 0; i < document.getElementById('timezone').options.length; i++) {
    if (document.getElementById('timezone').options[i].value == timezone_value) {
      document.getElementById('timezone').options[i].selected = true;
      break;
    }
  }
}
