// ===================================================================
// Author: Ed Lin
//
// NOTICE: You may not use this code for any purpose, commercial or
// private, without any permission from the author. 
//
// You may *NOT* re-distribute this code in any way 
// ===================================================================

var position = "RELATIVE";

function setAbsolutePosition(){
	position = "ABSOLUTE";	
}

function showCalendar(main_layer,e,input_id,input_load_date) {
	
	if(document.getElementById("calframe")==undefined){

  		var main_layer_obj = document.getElementById(main_layer);
	
  		if(input_load_date!=input_id && document.getElementById(input_id).value!=""){
  			var input_load_date = input_id;
  		}

  		var entered_date = document.getElementById(input_load_date);
  	
	  	if(entered_date.value==""){
  			calendar_date = new Date();

  		}
  		else {
  			
			date_str = entered_date.value.split("/");
			calendar_date = new Date(date_str[2],date_str[0]-1,date_str[1]);

  			if(calendar_date=="Invalid Date" || calendar_date=="NaN"){
				calendar_date = new Date();
			}
  		}		
  		
  		var o_navigator = navigator.userAgent.toLowerCase();
  		var isMacIE = (o_navigator.indexOf("msie 5")>-1&&o_navigator.indexOf("mac")>-1) ? 1 : 0;
  		var isPCIE = (o_navigator.indexOf("msie")>-1&&!isMacIE&&o_navigator.indexOf("opera")==-1) ? 1 : 0;

  		// step 1
  		var tempX = 0;
  		var tempY = 0;
  		var offsetX = 0;
  		var offsetY = -15;
  		var objHolder = main_layer_obj;

		if (!isPCIE) { 
 	  		tempX=parseInt(e.clientX)
      		tempY=parseInt(e.clientY)
    	}
    	else {
      		tempX=event.clientX + document.body.scrollLeft
      		tempY=event.clientY + document.body.scrollTop 
    	}
  		
    	tempX = getMouseXPos(e)
  		tempY = getMouseYPos(e)
    
  		// step 4
  		if (tempX < 0){tempX = 0}
  		if (tempY < 0){tempY = 0}

  		// step 5
  		
  		if(position=="ABSOLUTE"){
  			
	  		main_layer_obj.style.top  = '0px';
  			main_layer_obj.style.left = '0px';
  		
  		}
  		else {
  			
  			main_layer_obj.style.top  = (tempY + offsetY) + 'px';
  			main_layer_obj.style.left = (tempX + offsetX) + 'px';
  			
  		}

  		// step 6
  		displayObject( objHolder, true );

  		createIFrame(main_layer,calendar_date,input_id);
	}
}

 
function displayObject( obj, show ) {

  	obj.style.display = show ? 'block' : 'none';
  	obj.style.visibility = show ? 'visible' : 'hidden';

}

function hide(element) {
	element.style.display = "none";
}

function getMouseXPos(e) {
	var ns6=document.getElementById&&!document.all
  
	if (document.layers||ns6) {
   		return (parseInt(e.clientX+10) + parseInt(document.documentElement.scrollLeft))
  	} 
  	else {
    	return (parseInt(event.clientX+10) + parseInt(document.documentElement.scrollLeft))
  	}
}
// Get the vartical position of the mouse
function getMouseYPos(e) {
	
	var ns6=document.getElementById&&!document.all
  	
	if (document.layers||ns6) {
		return (parseInt(e.clientY) + parseInt(document.documentElement.scrollTop))
  	} 
  	else {
    	return (parseInt(event.clientY) + parseInt(document.documentElement.scrollTop))
  	}
}

function createIFrame(id,calendar_date,input_id){
	
	//loadInvalidDates();
	
	var main_layer = document.getElementById(id);
	var main_table = document.createElement("TABLE");
	main_table.id = "calendar_container";
	main_table.name = "calendar_container";
	main_table.className = "calendar_container";
	main_table.cellpadding = 0;
	main_table.cellspacing = 0;
	var main_table_body = document.createElement("TBODY");
	var main_table_row = document.createElement("TR");
	var main_table_cell = document.createElement("TD");
	
	start_date = calendar_date;
	start_input_id = input_id;
	
	main_table_cell.innerHTML="<iframe id=\"calframe\" src='/javascript/calendar/calendar_container.html' width='185' height='215' scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" frameborder=\"0\"></iframe>";
	
	main_table_row.appendChild(main_table_cell);
	main_table_body.appendChild(main_table_row);
	main_table.appendChild(main_table_body);
	main_layer.appendChild(main_table);	
}

function addSpecialDate(entered_date,type){
	var date_str = entered_date.split("/");
	var id = date_str[2]+date_str[0]+date_str[1];
	special_date_array[id.toString()] = type;	
}

function removeSpecialDate(entered_date){
	var date_str = entered_date.split("/");
	var id = date_str[2]+date_str[0]+date_str[1];
	special_date_array[id.toString()] = undefined;	
}

function closeIFrame(onclick_obj){
	var frame = document.getElementById("calframe");

	if(frame && onclick_obj.id!="calendar_gif"){
		var container = document.getElementById("calendar_container");
		container.parentNode.removeChild(container);
	}
}

function isNumeric(number,type){
	var strValidChars = "0123456789";
   	var isNumber=true;
	var num = number.trim();
	
   	if(type=="integer"){
		if (num != parseInt(num)){
			isNumber = false;
		}
		
		if(num.charAt()==0 && num.length>1){
			isNumber = false;
		}
		
		for(i=1;i<num.length && isNumber == true;i++){
			if(strValidChars.indexOf(num.charAt(i))==-1){
				isNumber = false;
			}
		}
   	}
   	
   	if(type=="decimal"){
		if (num != parseFloat(num)){
			isNumber = false;
		}
   	}

   	return isNumber;
}

function loadInvalidDates(){
	var today = new Date();
	var today_day = today.getDate();
	var today_month = today.getMonth();
	var today_year = today.getFullYear();

	if((today_month+1)<10){
		today_month++;
		today_month = "0" + today_month.toString();
	}
	else {
		today_month++;
	}
		
	for(i=1;i<today_day;i++){
		
		if(i<10){
			i = "0" + i.toString();
		}
		
		var id = today_year.toString() + today_month.toString() + i.toString();

		special_date_array[id.toString()] = INVALID_DAY;	
	}
}

function getStateDate(){
	return start_date;
}

function getDateInputFieldID(){
	return start_input_id;
}

function getSpecialDateArray(){
	return special_date_array;
}

var special_date_array = new Array();

var start_date;
var start_input_id;
var CURRENT_DAY = 1;
var INVALID_DAY = 2;
var SOLD_OUT_DAY = 3;

if (document.addEventListener){
  	document.addEventListener('click', function (event) { closeIFrame(event.target);}, false); 
} 
else if (document.attachEvent){
  document.attachEvent('onclick', function () { closeIFrame(event.srcElement);});
}

