/*

OLD STUFF FROM general.js

*/


function SetFocus(TargetFormName) {
  var target = 0;
  if (TargetFormName != "") {
    for (i=0; i<document.forms.length; i++) {
      if (document.forms[i].name == TargetFormName) {
        target = i;
        break;
      }
    }
  }

  var TargetForm = document.forms[target];

  for (i=0; i<TargetForm.length; i++) {
    if ( (TargetForm.elements[i].type != "image") && (TargetForm.elements[i].type != "hidden") && (TargetForm.elements[i].type != "reset") && (TargetForm.elements[i].type != "submit") ) {
      TargetForm.elements[i].focus();

      if ( (TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password") ) {
        TargetForm.elements[i].select();
      }

      break;
    }
  }
}

function RemoveFormatString(TargetElement, FormatString) {
  if (TargetElement.value == FormatString) {
    TargetElement.value = "";
  }

  TargetElement.select();
}

function CheckDateRange(from, to) {
  if (Date.parse(from.value) <= Date.parse(to.value)) {
    return true;
  } else {
    return false;
  }
}

function IsValidDate(DateToCheck, FormatString) {
  var strDateToCheck;
  var strDateToCheckArray;
  var strFormatArray;
  var strFormatString;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var intDateSeparatorIdx = -1;
  var intFormatSeparatorIdx = -1;
  var strSeparatorArray = new Array("-"," ","/",".");
  var strMonthArray = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
  var intDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  strDateToCheck = DateToCheck.toLowerCase();
  strFormatString = FormatString.toLowerCase();

  if (strDateToCheck.length != strFormatString.length) {
    return false;
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strFormatString.indexOf(strSeparatorArray[i]) != -1) {
      intFormatSeparatorIdx = i;
      break;
    }
  }

  for (i=0; i<strSeparatorArray.length; i++) {
    if (strDateToCheck.indexOf(strSeparatorArray[i]) != -1) {
      intDateSeparatorIdx = i;
      break;
    }
  }

  if (intDateSeparatorIdx != intFormatSeparatorIdx) {
    return false;
  }

  if (intDateSeparatorIdx != -1) {
    strFormatArray = strFormatString.split(strSeparatorArray[intFormatSeparatorIdx]);
    if (strFormatArray.length != 3) {
      return false;
    }

    strDateToCheckArray = strDateToCheck.split(strSeparatorArray[intDateSeparatorIdx]);
    if (strDateToCheckArray.length != 3) {
      return false;
    }

    for (i=0; i<strFormatArray.length; i++) {
      if (strFormatArray[i] == 'mm' || strFormatArray[i] == 'mmm') {
        strMonth = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'dd') {
        strDay = strDateToCheckArray[i];
      }

      if (strFormatArray[i] == 'yyyy') {
        strYear = strDateToCheckArray[i];
      }
    }
  } else {
    if (FormatString.length > 7) {
      if (strFormatString.indexOf('mmm') == -1) {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mm'), 2);
      } else {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mmm'), 3);
      }

      strDay = strDateToCheck.substring(strFormatString.indexOf('dd'), 2);
      strYear = strDateToCheck.substring(strFormatString.indexOf('yyyy'), 2);
    } else {
      return false;
    }
  }

  if (strYear.length != 4) {
    return false;
  }

  intday = parseInt(strDay, 10);
  if (isNaN(intday)) {
    return false;
  }
  if (intday < 1) {
    return false;
  }

  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth)) {
    for (i=0; i<strMonthArray.length; i++) {
      if (strMonth == strMonthArray[i]) {
        intMonth = i+1;
        break;
      }
    }
    if (isNaN(intMonth)) {
      return false;
    }
  }
  if (intMonth > 12 || intMonth < 1) {
    return false;
  }

  intYear = parseInt(strYear, 10);
  if (isNaN(intYear)) {
    return false;
  }
  if (IsLeapYear(intYear) == true) {
    intDaysArray[1] = 29;
  }

  if (intday > intDaysArray[intMonth - 1]) {
    return false;
  }

  return true;
}

function IsLeapYear(intYear) {
  if (intYear % 100 == 0) {
    if (intYear % 400 == 0) {
      return true;
    }
  } else {
    if ((intYear % 4) == 0) {
      return true;
    }
  }

  return false;
}



/*

BEGIN NEW STUFF

*/



var c_OpenDescr;

// Our XmlHttpRequest object to get the auto suggest
var Req = getXmlHttpRequestObject();

// Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function containsDOM (container, containee) {
    var isParent = false;
    do {
	if ((isParent = container == containee))
	    break;
	containee = containee.parentNode;
    }
    while (containee != null);
    return isParent;
}

function checkMouseEnter (element, evt) {
    if (element.contains && evt.fromElement) {
	return !element.contains(evt.fromElement);
    }
    else if (evt.relatedTarget) {
	return !containsDOM(element, evt.relatedTarget);
    }
}

function checkMouseLeave (element, evt) {
    if (element.contains && evt.toElement) {
	return !element.contains(evt.toElement);
    }
    else if (evt.relatedTarget) {
	return !containsDOM(element, evt.relatedTarget);
    }
}

// Creates an more Info Link after text_item (used for Description of Item)
function initAttributesDescriptionHandler (text_item, val_id, val_type, val_info_text, val_close_text) {
	var c_link_id = val_type + val_id + 'switch';

	// check if new item is current item
	c_link = document.getElementById(c_link_id);
	if (c_link) return;

	// save values for item
	if (text_item.text == undefined) {
		text_item.text = text_item.innerHTML;
	}
	text_item.val_id = val_id;
	text_item.val_type = val_type;
	text_item.val_info_text = val_info_text;
	text_item.val_close_text = val_close_text;

	// create link
	link = document.createElement('a');
	link.id = c_link_id;
	link.href = "javascript:void(0);";
	link.onclick = function(){
		displayAttributesDescription(this.parentNode);
	}
	link.innerHTML = '[' + val_info_text + ']';

	// add link to item
	text_item.innerHTML += '&nbsp;&nbsp;';
	text_item.appendChild(link);

	text_item.onmouseout = function(event){
	    if (!event) var event = window.event;
	    if (checkMouseLeave(this, event)) { destroyAttributesDescriptionHandler(this) }
	}
}

// destroys the created more Info Link
function destroyAttributesDescriptionHandler (text_item) {
	text_item.innerHTML = text_item.text;
	text_item.initalized = false;
}


function displayAttributesDescription (text_item) {
	var c_descr_id = text_item.val_type + text_item.val_id + 'descr';
	var container = text_item.parentNode;

	// check if item exists and delete it
	c_descr = document.getElementById(c_descr_id);
	if (c_descr) c_descr.parentNode.removeChild(c_descr); c_descr = null;

	// create new description item
	descr_item = document.createElement('div');
	descr_item.close_text = text_item.val_close_text;
	descr_item.id = c_descr_id;
	container.appendChild(descr_item);

	if (descr_item) {
		if (c_OpenDescr) closeAttributesDescription();

		if (Req.readyState == 4 || Req.readyState == 0) {
			Req.open("GET", 'request.php?mode=attr_val&val_id=' + text_item.val_id + '&val_type=' + text_item.val_type, true);
			Req.onreadystatechange = function () {
				handleAttributesDescription(descr_item);
			}
			Req.send(null);
			c_OpenDescr = descr_item;
		}
	}
}

function closeAttributesDescription () {
	if (c_OpenDescr) {
		$("#" + c_OpenDescr.id).slideUp("slow");
		c_OpenDescr = undefined;
	}
}

function handleAttributesDescription (descr_item) {
	if (Req.readyState == 4 && Req.responseText != '') {
		$.scrollTo("#" + descr_item.parentNode.id, {duration:3000});
		/*if (Effect) new Effect.ScrollTo(descr_item.parentNode.id, {duration:2.0});*/
		descr_item.className = 'attributes_description';
		descr_item.description = Req.responseText;
		descr_item.innerHTML = descr_item.description + '<div style="clear: both; text-align: right; margin-top: 15px;"><a href="javascript: void(0);" onclick="closeAttributesDescription(this.parentNode.parentNode);">[' + descr_item.close_text + ']</a></div>' + '<div class="box_fix"></div>';
	} else if (Req.readyState == 4 && Req.responseText == '') {
		closeAttributesDescription();
	} else if (Req.readyState == 1) {
		descr_item.className = 'attributes_description_load';
		descr_item.style.display = 'none';
		descr_item.innerHTML = '<div style="display: block; text-align: center;"><img src="images/spinner.gif" width="32" height="32" border="0" alt="" /></div>';
		$("#" + descr_item.id).slideDown("slow");
	}
}
function cat_image_object () {
	this.images = '';
	this.t_images = '';
	this.c_index = 0;
	this.c_image = 'main';
	this.categories_image_id = '';
	this.categories_image_other_id = '';
	this.categories_image = '';
	this.categories_image_other = '';
}

var r_images = new Array();

function initSwitchCategoriesImage (categories_image_id, categories_image_other_id, categories_id) {
	categories_image = document.getElementById(categories_image_id);
	categories_image_other = document.getElementById(categories_image_other_id);

	if (Req.readyState == 4 || Req.readyState == 0) {
		if (categories_image && categories_image_other) {
			Req.open("GET", 'request.php?mode=cat_image&id=' + categories_id + '&c_img_id=' + categories_image_id + '&c_img_other_id=' + categories_image_other_id, true);
			Req.onreadystatechange = function () {setSwitchCategoriesImage();}
			Req.send(null);
		}
	} else {
		setTimeout('initSwitchCategoriesImage(\'' + categories_image_id + '\', \'' + categories_image_other_id + '\', \'' + categories_id + '\')', 1000);
	}
}

function setSwitchCategoriesImage () {
	if (Req.readyState == 4) {
		files = Req.responseText;
		if (files) {
			// add category images default at the first pos
			ar = files.split('|');

			// get the ids
			categories_image_id = ar.shift();
			categories_image_other_id = ar.shift();

			// set the images
			categories_image = document.getElementById(categories_image_id);
			categories_image_other = document.getElementById(categories_image_other_id);
			r_images[categories_image_id] = new cat_image_object();
			r_images[categories_image_id].c_index = 0;
			r_images[categories_image_id].images = ar;

			// set temp images array
			r_images[categories_image_id].t_images = new Array();
			r_images[categories_image_id].t_images[0] = new Image();
			r_images[categories_image_id].t_images[0].src = categories_image.src;

			// set current visible image
			r_images[categories_image_id].c_image = 'main';

			// remember image objects
			r_images[categories_image_id].categories_image_id = categories_image_id;
			r_images[categories_image_id].categories_image_other_id = categories_image_other_id;
			r_images[categories_image_id].categories_image = categories_image;
			r_images[categories_image_id].categories_image_other = categories_image_other;
			r_images[categories_image_id].categories_image_other.style.display = 'none';

			// start the fadeshow
			handleCategoriesImage(categories_image_id);
		}
	}
}

function handleCategoriesImage (categories_image_id) {
	// get indexes
	n_index = (r_images[categories_image_id].c_index + 1 >= r_images[categories_image_id].images.length - 1 ? 0 : r_images[categories_image_id].c_index + 1);
	nn_index = (r_images[categories_image_id].c_index + 2 >= r_images[categories_image_id].images.length - 1 ? 0 : r_images[categories_image_id].c_index + 2);

	// check if the image is already loaded
	if (!r_images[categories_image_id].t_images[n_index]) {
		r_images[categories_image_id].t_images[n_index] = new Image();
		r_images[categories_image_id].t_images[n_index].src = r_images[categories_image_id].images[n_index];
	}

	// preload next image
	if (!r_images[categories_image_id].t_images[nn_index]) {
		r_images[categories_image_id].t_images[nn_index] = new Image();
		r_images[categories_image_id].t_images[nn_index].src = r_images[categories_image_id].images[nn_index];
	}

	// relpace either the main image or the overlay image, depending which one is currently visible
	if (r_images[categories_image_id].c_image == 'main') {
		r_images[categories_image_id].categories_image_other.src = r_images[categories_image_id].t_images[n_index].src;
		//Effect.Appear('\' + categories_image_other.id + '\'', {duration:.5});
		setTimeout('$(\'#' + r_images[categories_image_id].categories_image_other_id + '\').fadeIn(2000)', 2500);
		r_images[categories_image_id].c_image = 'other';
	} else {
		r_images[categories_image_id].categories_image.src = r_images[categories_image_id].t_images[n_index].src;
		//new Effect.Fade('categories_image_other');
		setTimeout('$(\'#' + r_images[categories_image_id].categories_image_other_id + '\').fadeOut(2000)', 2500);
		r_images[categories_image_id].c_image = 'main';
	}

	// set the new index
	r_images[categories_image_id].c_index = n_index;

	setTimeout('handleCategoriesImage(\'' + categories_image_id + '\')', 5500);
}
