/********************************** string object utilities *********************************************/
//The first line assigns the MatchIgnoreCase function as an equalsIgnoreCase method of the String object
String.prototype.equalsIgnoreCase=string_MatchIgnoreCase;
String.prototype.trim = string_Trim;
String.prototype.rTrim = string_RTrim;
String.prototype.lTrim = string_LTrim;

function string_Trim(){
	var TRIM_VALUE = this;
	if(TRIM_VALUE.length < 1){
		return"";
	}
	TRIM_VALUE = string_RTrim(TRIM_VALUE);
	TRIM_VALUE = string_LTrim(TRIM_VALUE);
	if(TRIM_VALUE==""){
		return "";
	}
	else{
		//this = TRIM_VALUE;
		return TRIM_VALUE;
	}
} //End Function

function string_RTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0){
		return"";
	}
	var iTemp = v_length -1;

	while(iTemp > -1){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;
	} //End While
	return strTemp;

} //End Function

function string_LTrim(VALUE){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
		return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function

function string_MatchIgnoreCase(strTerm){
	var strToSearch = this.toLowerCase();
	strTerm = strTerm.toLowerCase();
	if(strToSearch==strTerm){
		return true;
	}
	else{
		return false;
	}
} //End Function

/** pet type related using Ajax **/
var pet_type_xmlHttp;
var pet_type_current_index;
function popPetSubType(src, index, actionPage, selectedSubTypeValue){
	pet_type_xmlHttp=GetXmlHttpObject();
	if (pet_type_xmlHttp==null)
 	{
 		alert ("Browser does not support HTTP Request");
 		return;
 	}
	var catId = src.options[src.selectedIndex].value;
	if(catId == ""){
		var sel_pet_sub_type = document.getElementById("sel_pet_sub_type_" + index);
		if(sel_pet_sub_type){
			sel_pet_sub_type.style.display = "none";
		}
		return;
	}
	pet_type_current_index = index;
	var url= actionPage + "?mode=get_pet_breed_by_cat&category_id=" + catId + "&selected_subtype_id=" + selectedSubTypeValue;
	pet_type_xmlHttp.onreadystatechange=popPetSubTypeReady;
	pet_type_xmlHttp.open("GET",url,true);
	pet_type_xmlHttp.send(null);
	
}
function popPetSubTypeReady(){
	if (pet_type_xmlHttp.readyState==4 || pet_type_xmlHttp.readyState=="complete")
 	{ 
		var txt = pet_type_xmlHttp.responseText;		
		if(txt.length < 1) return;
		if(txt.substring(0,1)=="@"){
			alert(txt.substring(1));
			return;
		}		
		var div_sel_pet_breed = document.getElementById("div_sel_pet_breed_"+pet_type_current_index);
		div_sel_pet_breed.innerHTML = "<select name='sel_pet_sub_type_"+ pet_type_current_index +"' id='sel_pet_sub_type_"+ pet_type_current_index +"'>"+txt+"</select>";
 	}
}
/** END OF pet type related using Ajax **/

function pet_get_TypeString_Simple(petCatString, petBreedString, isMixed){
	var mixed= isMixed ? "Mixed" : "" ;
	if(petBreedString != "" && petBreedString.substring(0, 1) == "#"){
		petBreedString = "";
	}
	if(petBreedString != ""){
		if(isMixed) mixed = " : " + mixed;
		petBreedString = " (" + petBreedString + mixed + ") ";
	}
	else{
		if(isMixed)
			petBreedString = " (" + mixed + ") ";
	}
	return petCatString + petBreedString;
}

function convertToDays(yearTextBox, monthTextBox, daysTextBox){
	var yr = parseInt(yearTextBox);
	var mon = parseInt(monthTextBox);
	var day = parseInt(daysTextBox);
	if(isNaN(yr) || yr > 99 || yr < 0 ){
		alert("Invalid year!");
		yearTextBox.focus();
		return -1;
	}
	if(isNaN(mon) || mon > 11 || mon < 0 )
	{			
		alert("Invalid month! Month should be value between 0 ~ 11.");
		monthTextBox.focus();
		return -1;
	}
	if(isNaN(day) || day > 31 || day < 0 )
	{			
		alert("Invalid days! Day should be value between 0 ~ 30.");
		daysTextBox.focus();
		return -1;
	}	
	return yr * 365 + mon * 30 + days;
}

function open_select_area(select_area_url, zipcodeInput, areacodeInput, stateSel, cityInput){
	var argObj;
	if(zipcodeInput) {
		argObj = new Object();
		if(zipcodeInput.value.trim().length == 5 && Validate(zipcodeInput.value, "zipcode")){
			argObj.zipcode = zipcodeInput.value.trim();
		}
	}
	var returnVal = window.showModalDialog(select_area_url, argObj, "dialogHeight=320px;dialogWidth=320px;status:no;resizable:yes;scroll:no;center:yes;");
	if(!returnVal) return;
	var zipcode = returnVal[0]; 
	var areacode = returnVal[1]; 
	var city = returnVal[2]; 
	var state = returnVal[3];
	
	if(zipcodeInput) zipcodeInput.value = zipcode; //
	if(areacodeInput) areacodeInput.value = areacode; 
	if(stateSel) Select_SetSelectedValue(stateSel, state); //
	if(cityInput) cityInput.value = city; //
 }
 
function findImg(imgId){
	var preLoadImgArr = document.PreLoadImgArr;
	if(preLoadImgArr!=null)
	{
		for(var i=0; i < preLoadImgArr.length; i++){
			if(preLoadImgArr[i].id == imgId){
				return preLoadImgArr[i];
			}
		}
	}
	return null;
}
function changeIconOut(e){
	var source = (window.event) ? window.event.srcElement : e.target;
	//var srcImg = source.getAttribute("img_out");	
	var img = findImg(source.id);
	if(img != null) source.src = img.src;
	if(source.getAttribute("PopupHelp") != null || source.getAttribute("Tooltip") != null)
	{
		hideHelp();
	}
}
function changeIconOver(e){
	var source = (window.event) ? window.event.srcElement : e.target;
	//var srcImg = source.getAttribute("img_over");
	var img = findImg(source.id + "_over");
	if(img != null) source.src = img.src;
	if(source.getAttribute("PopupHelp") != null || source.getAttribute("Tooltip") != null)
	{
		showHelp();
	}
	//special logic for Help message goes here.
}
function addImageEvent(imgObj){
	var preLoadImgArr = document.PreLoadImgArr;
	if(preLoadImgArr==null)
	{
		preLoadImgArr = new Array();
		document.PreLoadImgArr = preLoadImgArr;
	}
	if(!imgObj) return;
	imgObj.style.cursor = "pointer";
	imgObj.setAttribute("border", 0);
	var srcPath = imgObj.src;
	var srcPath_over = srcPath.replace(".gif", "") + "_over.gif";
	var idx = preLoadImgArr.length;	
	preLoadImgArr[idx] = new Image();
	preLoadImgArr[idx].src = srcPath_over;
	preLoadImgArr[idx].id = imgObj.id + "_over";
	preLoadImgArr[++idx] = new Image();
	preLoadImgArr[idx].src = srcPath;
	preLoadImgArr[idx].id = imgObj.id;
	if(window.attachEvent){
		imgObj.attachEvent("onmouseover", changeIconOver);
		imgObj.attachEvent("onmouseout", changeIconOut);
	}
	else{ //notice there is no 'on' prefix
		imgObj.addEventListener("mouseover", changeIconOver, false);
		imgObj.addEventListener("mouseout", changeIconOut, false);
	}
}

function navigate(){	
	var source = event.srcElement;
	var url = source.getAttribute("Url");
	window.location.href = url;
}

//For all images with MouseOverImg attributes, mouse over/out events are automatically registered.
//image source convention: srcImg.gif(regular image) -> srcImg_over.gif(mouse over image)
// MouseOverImg, Url="http://"
function regMouseOverImgs(){
	var numOfMouseOverImgs=0;
	var preLoadImgArr = document.PreLoadImgArr;
	if(preLoadImgArr==null)
	{
		preLoadImgArr = new Array();
		document.PreLoadImgArr = preLoadImgArr;
	}
	for(var i =0; i < document.all.length ; i++){	
		var obj = document.all(i);
		if(obj.tagName!= "IMG" && obj.tagName != "INPUT") continue;
		var isMouseOverImg = obj.getAttribute("MouseOverImg");
		var hasToolTip = obj.getAttribute("PopupHelp") != null || obj.getAttribute("Tooltip") != null;
		if(isMouseOverImg!=null){
			//var srcPath = obj.src;
			//var srcPath_over = srcPath.replace(".gif", "") + "_over.gif";
			//obj.style.cursor = "pointer";
			//obj.setAttribute("border", 0);
			//obj.setAttribute("img_over", srcPath_over);
			//obj.setAttribute("img_out", srcPath);
			//obj.attachEvent("onmouseover", changeIconOver);
			//obj.attachEvent("onmouseout", changeIconOut);
			if(obj.id == null || obj.id == ""){
				obj.id = "MouseOverImg" + "_" + i;
			}
			addImageEvent(obj);
			numOfMouseOverImgs++;
		}
		else if(hasToolTip)
		{
			obj.attachEvent("onmouseover", showHelp);
			obj.attachEvent("onmouseout", hideHelp);
		}
		var url = obj.getAttribute("Url");
		
		if(url!=null && url != "")
		{
			obj.attachEvent("onclick", navigate);
		}
	}
}
function showHelp(){
	var div = document.getElementById("divHelpDialog");
	var span = document.getElementById("spanHelpDialog");
	var source = event.srcElement;
	var desc = source.getAttribute("PopupHelp");
	if(!desc) desc =  source.getAttribute("Tooltip");
	if(!desc) return;
	
	source.style.cursor = "pointer";
	span.innerHTML = desc.replace("[", "<").replace("]", ">");	

	div.style.top = event.clientY + document.body.scrollTop;
	if(document.body.offsetWidth > (event.clientX + div.offsetWidth) )
	{
		div.style.left = event.clientX + document.body.scrollLeft +  10;
	}
	else
	{		
		div.style.left = event.clientX + document.body.scrollLeft -  div.offsetWidth;
	}
}
function hideHelp(){
	var div = document.getElementById("divHelpDialog");
	if(!div) return;
	div.style.top = -1000;
	
	//
}
function showSubMnu(mnuName, left, idx){
	var top = 88;
	var divTarget = document.getElementById("divSubMnu" + mnuName);
	if(!divTarget) return;
	divTarget.style.top = top;
	divTarget.style.left = left;
	divTarget.style.zIndex="101";
	var imgMnu = document.getElementById("imgMnu" + mnuName);
	//imgMnu.src = imgMnu.getAttribute("img_over");
	var img = mnu_img[idx];//findImg(imgMnu.id + "_over");
	if(img != null) imgMnu.src = img.src;
	
	var divSubMnuHideSelTag = document.getElementById("divSubMnuHideSelTag");
	if(divSubMnuHideSelTag){
		divSubMnuHideSelTag.style.top= divTarget.style.top;
		divSubMnuHideSelTag.style.left= divTarget.style.left;
		divSubMnuHideSelTag.style.width=divTarget.offsetWidth+"px";
		divSubMnuHideSelTag.style.height=divTarget.offsetHeight+"px";
	}
}
function hideSubMnu(mnuName, idx){
	var divTarget = document.getElementById("divSubMnu" + mnuName);
	divTarget.style.top = -1000;
	var imgMnu = document.getElementById("imgMnu" + mnuName);
	//imgMnu.src = imgMnu.getAttribute("img_out");
	var img = mnu_img[idx];//findImg(imgMnu.id);
	if(img != null) imgMnu.src = img.src;	
	var divSubMnuHideSelTag = document.getElementById("divSubMnuHideSelTag");
	if(divSubMnuHideSelTag){	
		divSubMnuHideSelTag.style.top = divTarget.style.top;
	}
}
function realTest()
{
	alert('realTest');
}
