
//////////////////////////////////////////////////////////////////////	
/**********************************************************************
* USED IN SEVERAL FILES
**********************************************************************/	
function detailWindow(url, w, h) {
	var leftPoint = (top.screen.width - w) / 2;
	var topPoint = (top.screen.height - h) / 2;

	var winDetails = window.open(url, 'detail', 'toolbar=no,location=no,directories=no,status=no,menubar=0,scrollbars=yes,left=' + leftPoint + ',top=' + topPoint + ',resizable=yes,width=' + w + ',height=' + h + '')
	
	if (winDetails != null)
	{
		if (winDetails.opener == null)
			winDetails.opener = self;
		else
			winDetails.focus();
	}
}



function formatPhoneNumber(txt, e)
{
	var validChars = "0123456789";
	var str = txt.value;
	var len = str.length;			
	var aChar = str.charAt(len-1);
	var keyCode;
	
	if (document.all)
		keyCode = event.keyCode;
	else
		keyCode = e.which;
	
	if (keyCode == 8)
		return;
	
	
	if (validChars.indexOf(aChar) != -1)
	{
		if ((len == 3) || (len == 7))
			txt.value = str + "-";
	}
	else
		txt.value = str.substr(0, len-1);

	
	txt.focus();		
}




function formatNumberInput(txt, e)
{
	var validChars = "0123456789.";
	var str = txt.value;
	var len = str.length;			
	var aChar = str.charAt(len-1);
	var keyCode;
	
	if (document.all)
		keyCode = event.keyCode;
	else
		keyCode = e.which;
	
	if (keyCode == 8)
		return;
	
	
	if (validChars.indexOf(aChar) == -1)
		txt.value = str.substr(0, len-1);

	
	txt.focus();		
}



function formatDateOfBirth(txt, e)
{
	var validChars = "0123456789/";
	var str = txt.value;
	var len = str.length;			
	var aChar = str.charAt(len-1);
	var keyCode;
	
	if (document.all)
		keyCode = event.keyCode;
	else
		keyCode = e.which;
	
	if (keyCode == 8)
		return;
	
	if (len > 10)
		txt.value = str.substr(0, len-1);
	else
	{
	
		if (validChars.indexOf(aChar) != -1)
		{
			if ((len == 2) || (len == 5))
				txt.value = str + "/";
		}
		else
			txt.value = str.substr(0, len-1);
		}
		
	

	
	txt.focus();		
}





function changeFocus(field1, field2, len) {
   	if (field1.value.length == len) {
       	field2.focus();
        field2.select();
   	    return false;
	}
   	return true;
}	


/*
Submit Once form validation- 
© Dynamic Drive (www.dynamicdrive.com)
For full source code, usage terms, and 100's more DHTML scripts, visit http://dynamicdrive.com
*/

function submitonce(theform){
	//if IE 4+ or NS 6+
	if (document.all||document.getElementById){
		//screen thru every element in the form, and hunt down "submit" and "reset"
		for (i=0;i<theform.length;i++){
			var tempobj=theform.elements[i]
			
//			if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
			if(tempobj.type.toLowerCase()=="submit")
				//disable em
				tempobj.disabled=true
		}
	}
}




function submitonce_img(theform, theElem){
	//if IE 4+ or NS 6+
	if (document.all||document.getElementById){
		//screen thru every element in the form, and hunt down "submit" and "reset"
		for (i=0;i<theform.length;i++){
			var tempobj=theform.elements[i]
			
			if(tempobj.type.toLowerCase()=="img" && tempobj.name == theElem)
				//disable em
				tempobj.disabled=true
		}
	}
}



//trims the leading & ending white spaces of a text
function trim( val )
{   
    // return if string is empty
    if ( null == val || val.length < 1) return val;

    var value = val;
    while (value.charAt(value.length-1) == " "){value = value.substring(0,value.length-1);}
    while(value.substring(0,1) ==" "){value = value.substring(1,value.length);}

    return value;
}


/**
 * author: sherwin
 * function to write text value of 
 * select box to a textbox or hidden field. 
 * parameters: select box object, id of object to be written to.
*/
function captureSelectedText(selectBox, obj)
{
    //alert(selectBox);
    if (null == selectBox || selectBox == "undefined" || null == obj || obj == "undefined")
    {
        //do nothing
    }
    else
    {
        obj.value = selectBox.options[selectBox.selectedIndex].text;
    }
}// end of function captureSelectedText

        
/** 
* author: sherwin
* this function toggles a html element display
* @param String -- elementId
*/
function toggleElementDisplay(elementId)
{
    var element = document.getElementById(elementId);
    if (element.style.display == "") element.style.display = "none";
    element.style.display = (element.style.display == "none") ? "block" : "none";
} 
/**
* author: sherwin
* this function toggles a html element display
* @param String -- elementId
*/
function toggleElementDisplayInline(elementId)
{
    var element = document.getElementById(elementId);
    element.style.display = (element.style.display == "none") ? "inline" : "none";
}

//called by onmouseover/onmouseout event on table product list rows
//to highlight row
function highlightRow(rowId, mode)
{
    if ( document.getElementById(rowId) )
    {
        var row = document.getElementById(rowId);
        if (mode == "over")
        {            
            row.style.backgroundColor = "#cfffe8";
        }
        else
        {
            row.style.backgroundColor = "";
        }
    }

}//end of highlightRow

//this function changes an image src
//@param image
//@param string -- src
function changeImageSrc(image, src)
{
    image.src = src;
}
//////////////////////////////////////////////////////////////////////


function sendPassword(oForm)
{
	oForm.submit();
}



/* estore form management */
function addEstoreFormElement(elem_name, val)
{
    var form = document.forms["frmCanonEstore"];
    if ( formElementExist(form, elem_name) )
    {
        /*if (elem_name == "category_id")
        {
           form.category_id.value = "";
           form.sub_category_1_id.value = "";
           form.sub_category_2_id.value = "";
           form.product_code.value = "";
        }*/
        eval("form." + elem_name).value = val;
    }
    else
    {
        var newElement = document.createElement("input");
        newElement.type = "hidden";
        newElement.name = name;
        newElement.id = name;
        newElement.value = val;
        form.appendChild(newElement);
    }
}
/* check if a form element exist 
    @param object -- form
    @param string -- element name
    @return boolean
*/
function formElementExist(form, elem_name)
{
    var flag = false;
    for(i = 0; i < form.length; i++)
    {
        if (form.elements[i].name == elem_name)
        {
            flag = true;
            break;
        }
    }
    return flag;
}
/* submits the estore form
   @param string -- form's action
*/
function submitEstoreForm(action)
{   
    var form = document.forms["frmCanonEstore"];
    form.action = action;
    form.submit();
}
/* end estore form management */

/*
author: sherwin
good: 10.2, 10.20, .02

*/
function isNumeric(val)
{
    if (trim(val) != "")
    {
        var regex = /^\d{1,}(\.\d{2})?$/;
        if (regex.test(val))
        {
            return true;
        }
        else    
        {
            return false;
        }
    }
    else    
    {
        return false;
    }
}

/*
author: sherwin
good: 10
bad: 10.00, 10., 10.1
*/
function isNumber(val)
{
    if (trim(val + "") != "")
    {
        var regex = /^\d{1,}$/;
        if (regex.test(val))
        {
            return true;
        }
        else    
        {
            return false;
        }
    }
    else    
    {
        return false;
    }
}



/*
changes the focus to the next text for postal_code entry
@param current textbox, next textbox id
*/
function change_pc_txtbox_focus(txtbox, next_txtbox, e)
{
    var regex = /^[a-zA-Z]\d{1}[a-zA-Z]$/;
    var keycode;
    if (window.event) 
    {
        keycode = window.event.keyCode;
    }
    else if (e) 
    {
        keycode = e.which;
    }
    
    if (keycode != 16 && keycode != 9)
    {
        if (regex.test(txtbox.value))
        {
            document.getElementById(next_txtbox).focus();
        }
    }
}//end of register_change_pc_txtbox_focus

/*
changes the focus to the next text for phone/fax number entry
@param current textbox, next textbox id
*/
function change_phone_txtbox_focus(txtbox, next_txtbox, e)
{
    var regex = /^\d{3}$/;
    var keycode;
    if (window.event) 
    {
        keycode = window.event.keyCode;
    }
    else if (e) 
    {
        keycode = e.which;
    }
    
    if (keycode != 16 && keycode != 9)
    {
        if (regex.test(txtbox.value))
        {
            document.getElementById(next_txtbox).focus();
        } 
    }      
}//end of register_change_phone_txtbox_focus

/*
toggle the display/visibility of select boxes
*/
function toggleSelectBoxesDisplay(mode)
{
    var select_boxes = document.getElementsByTagName("SELECT");
    var itm_to_toggle;
    var display = (mode == "hide") ? "none" : "block";
    
    for (i = 0; i < select_boxes.length; i++)
    {
        itm_to_toggle = select_boxes[i];
        itm_to_toggle.style.display = display;
    }
}
function toggleSelectBoxesVisibility(mode)
{
    var select_boxes = document.getElementsByTagName("SELECT");
    var itm_to_toggle;
    var visibility = (mode == "hide") ? "hidden" : "visible";
    
    for (i = 0; i < select_boxes.length; i++)
    {
        itm_to_toggle = select_boxes[i];
        itm_to_toggle.style.visibility = visibility;
    }

}


//finds the top / left position of an element  
//params: element
//return: array[left, top]
function findElementPosition(elem) 
{
	var left = 0;
	var top = 0;
	
	if (elem.offsetParent) 
	{
		left = elem.offsetLeft;
		top = elem.offsetTop;
//		alert("elem.offsetLeft: " + elem.offsetLeft + "\nelem.offsetTop: " + elem.offsetTop);
		while (elem = elem.offsetParent) 
		{
			left += elem.offsetLeft
			top += elem.offsetTop
		}
	}
	top = (document.all && document.getElementById) ? (top + 2) : top;
	left = (document.all && document.getElementById) ? (left + 2) : left;
	
	return [left, top];
} //end of findElementPosition