//#########################################################################################################  
//	# File Name: common.js
//	# File Version: v 1.0
//	# Created By: Maulik Chandarana
//	# Created On: 14 Jan 2008
//	# Last Modified By:
//	# Last modified On:
//######################################################################################################### 

//==================================================================================================== 
//  Function Name : IsEmpty 
//	# Created By: Maulik Chandarana
//	# Created On: 14 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : checks whether a field has value or is blank, it returns false if a field 
//  is empty otherwise true. 
//  Parameters: fld : Field name to be check for blank.
//	string msg : Message if field is blank.	
//---------------------------------------------------------------------------------------------------- 


function IsEmpty(fld,msg) 
{ 
	
	fld.value = Trim(fld.value);
	if((fld.value == "" || fld.value.length == 0) && (msg == '')) 
	{ 
		return false; 
	} 
	if(fld.value == "" || fld.value.length == 0) 
	{ 
		alert(msg); 
		fld.focus(); 
		return false; 
	} 
	return true; 
} 

//==================================================================================================== 
//  Function Name : Trim 
//	# Created By: Maulik Chandarana
//	# Created On: 14 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : Removes leading and trailing spaces from field values. 
//  Parameters: fld : Field name to be Trim.
//---------------------------------------------------------------------------------------------------- 
function Trim(fld)
{
	while(''+fld.charAt(0)==' ')
		fld=fld.substring(1,fld.length);
	while(''+fld.charAt(fld.length-1)==' ')
		fld=fld.substring(0,fld.length-1);
	
	while(''+fld.charCodeAt(0)==13 || ''+fld.charCodeAt(0)==10)
		fld=fld.substring(1,fld.length);
	while(''+fld.charCodeAt(fld.length-1)==13 || ''+fld.charCodeAt(fld.length-1)==10)
		fld=fld.substring(0,fld.length-1);
	return fld;
}

//==================================================================================================== 
//  Function Name : IsEmail 
//	# Created By: Maulik Chandarana
//	# Created On: 14 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : checks Email validity. Email must have character @ followed by one or more 
//  dots. It returns flase if Email is invalid otherwise true. 
//  Parameters: fld : Field name to be check for email.
//	string msg : Message if field is not valid email.	
//---------------------------------------------------------------------------------------------------- 
function IsEmail(fld,msg) 
{ 
	fld.value = Trim(fld.value);
	
   // var regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
   var regex=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

	if(!regex.test(fld.value)) 
	{ 
		alert(msg); 
		fld.focus(); 
		return false; 
	} 
	return true; 
} 

//==================================================================================================== 
//  Function Name : IsValidString 
//	# Created By: Maulik Chandarana
//	# Created On: 14 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : checks if field value contains only alphanumeric and '_' charactes. Also checks 
//  that alphabetical chars. and '_' must have to be come first and followed by 
//  numbers. It returns false if above conditions will not satisfy otherwise true. 
//  Parameters: fld : Field name to be check for validation.
//	string msg : Message if field is not valid.	

//---------------------------------------------------------------------------------------------------- 
function IsValidString(fld,msg) 
{ 
	var regex = /^[_]*[a-zA-Z_]+[a-zA-Z0-9_]+$/; 
	if(!regex.test(fld.value)) 
	{ 
		alert(msg); 
		fld.focus(); 
		return false; 
	} 
	return true; 
} 

/*#====================================================================================================
#  Function Name :  ajaxShowStates
#  Created By: Sarvesh Borkar
#  Created On: 25 Jan 2008
#  Last Modified By: 
#  Last modified On: 
#  Purpose : To fetch state dropdown on change of country dropdown
#  Parameters: countryId ->Id of the selected country
#  Called from:addedit_clients.php
#----------------------------------------------------------------------------------------------------
*/
function ajaxShowStates(countryId)
{
	xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
        alert ("You browser does not support AJX HTTP Request !! Update to latest version!");
        return;
    }
    
     var url="ajaxStateDropdown.php";
     url=url+"?country_id="+countryId;
     xmlHttp.onreadystatechange=stateChanged
     xmlHttp.open("GET",url,true);
     xmlHttp.send(null);
}


/*#====================================================================================================
#  Function Name :  GetXmlHttpObject
#  Created By: Sarvesh Borkar
#  Created On: 25 Jan 2008
#  Last Modified By: 
#  Last modified On: 
#  Purpose : To create xmlhttpobject
#  Parameters: 
#  Called from:ajaxShowStates()
#----------------------------------------------------------------------------------------------------
*/
var xmlHttp
function GetXmlHttpObject()
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp
}

/*#====================================================================================================
#  Function Name :  stateChanged
#  Created By: Sarvesh Borkar
#  Created On: 25 Jan 2008
#  Last Modified By: 
#  Last modified On: 
#  Purpose : To populate div tag
#  Parameters: 
#  Called from:ajaxShowStates()
#----------------------------------------------------------------------------------------------------
*/
function stateChanged()
{

    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
      // alert(xmlHttp.responseText);
       document.getElementById('div_states').innerHTML=xmlHttp.responseText
    }
}



/*==================================================================================================== 
# Function Name : fnDateCompare 
# Created By: Maulik Chandarana
# Created On: 14 Jan 2008
# Last Modified By:
# Last modified On:
# Purpose : 
# Parameters : 
---------------------------------------------------------------------------------------------------- */
function fnDateCompare(date1,date2,msg1,msg2)
{
	var dt1=new Date;
	var dt2=new Date;
	var temp1=0;
	var Arrdt=date1.split("-");
	
	temp1=Arrdt[1]-1;
	
	dt1 = new Date(Arrdt[0],temp1,Arrdt[2]);

	var Arrdt=date2.split("-");
	
	temp1=Arrdt[1]-1;

	dt2 = new Date(Arrdt[0],temp1,Arrdt[2]);
	if(dt2<dt1)
	{
			alert(msg2+" should be greater than "+msg1);
			return false;
	}
	return true;
}

//====================================================================================================
//  Function Name: docObj
//  Created By: Richard Fernandes
//  Created On:  13 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To obtain an HTML element's object
//  Parameters: elemId : Id of the HTML element
//----------------------------------------------------------------------------------------------------
function docObj(elemId){
	return document.getElementById(elemId);
}

//====================================================================================================
//  Function Name: hide
//  Created By: Richard Fernandes
//  Created On: 13 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To hide a HTML element
//  Parameters: elemId : Id of the HTML element
//----------------------------------------------------------------------------------------------------
function hide(elemId){
	var element = docObj(elemId);
	element.style.display = 'none';
	element.style.visibility = 'hidden';
}

//====================================================================================================
//  Function Name: show
//  Created By: Richard Fernandes
//  Created On: 13 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To unhide a HTML element
//  Parameters: elemId : Id of the HTML element
//----------------------------------------------------------------------------------------------------
function show(elemId){
	var element = docObj(elemId);
	element.style.display = 'block';
	element.style.visibility = 'visible';
}

//==================================================================================================== 
//  Function Name : moveSelectOptions 
//	# Created By: Richard Fernandes
//	# Created On:  14 Feb 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : 
//  Parameters: [srcSelectElemId: Id of the source select element,trgtSelectElemId: Id of the target select element]
//---------------------------------------------------------------------------------------------------- 
function moveSelectOptions(srcSelectElemId,trgtSelectElemId){
	var srcSelectElement = docObj(srcSelectElemId);
	var trgtSelectElement = docObj(trgtSelectElemId);

	for(i=0;i<srcSelectElement.options.length;){
		if(srcSelectElement.options[i].selected){
		 	var item = document.createElement('OPTION');
		 	item.text = srcSelectElement.options[i].text;
		 	item.value = srcSelectElement.options[i].value;
		 	item.label = srcSelectElement.options[i].label;
		 	item.selected = false;
		 	try{trgtSelectElement.add(item,null);} // standards compliant
			catch(ex){trgtSelectElement.add(item);} // IE only
			srcSelectElement.remove(i);
			i=0;
		}
		else{i++;}
	}
}

//==================================================================================================== 
//  Function Name : IsNumeric
//	# Created By: Richard Fernandes
//	# Created On: 14 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : checks if a value is numeric
//  Parameters: fld : Field name to be check.
//	string msg : Message if field is not valid.	
//---------------------------------------------------------------------------------------------------- 
function IsNumeric(fld,msg) 
{ 
	fld.value = Trim(fld.value);
	
   var regex = /^[0-9_]+$/; 
	if(!regex.test(fld.value)) 
	{ 
		alert(msg); 
		fld.focus(); 
		return false; 
	} 
	return true;
} 

//==================================================================================================== 
//  Function Name : IsValidURL
//	# Created By: Harsh Aghicha
//	# Created On: 17 Feb 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : checks if a URL is valid
//  Parameters: fld : Field name to be check.
//	string msg : Message if field is not valid.	
//---------------------------------------------------------------------------------------------------- 
function IsValidURL(fld,msg) 
{
 	fld.value = Trim(fld.value);	
	//var regex = /^[A-Za-z]+:\/\/[A-Za-z0-9-]+.[A-Za-z0-9]+/;
	var regex = /^http(s?):\/\/[A-Za-z0-9-]+.[A-Za-z0-9]+/i;
	if (!regex.test(fld.value))
	{
		alert(msg);
		return false;
	}
	return true;
}

//==================================================================================================== 
//  Function Name : markSelectOptionsAsSelected 
//	# Created By: Richard Fernandes
//	# Created On:  14 Feb 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : mark all values in a dropdown as selected before submitting form
//  Parameters: selectId	-	id of the select element
//---------------------------------------------------------------------------------------------------- 
function markSelectOptionsAsSelected(selectId){
	var GeoIpList = docObj(selectId);	
	for(i=0;i<GeoIpList.options.length;i++){
		GeoIpList.options[i].selected=true;
	}
}

//====================================================================================================
//  Function Name    :    copyToClipboard()
//  Created By: Harsh Aghicha
//  Created On: 17 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To copy the URL to the clip board
//  Parameters: s : string to be copied to clip board
//----------------------------------------------------------------------------------------------------
function copyToClipboard(text2copy)
{ 		
	if (window.clipboardData) 
	{
		window.clipboardData.setData("Text",text2copy);
	}
	else
	{	 	
		var flashcopier = 'flashcopier';
		if(!docObj(flashcopier)) 
		{		 	
			var divholder = document.createElement('div');
			divholder.id = flashcopier;
			document.body.appendChild(divholder);
		}
		document.getElementById(flashcopier).innerHTML = '';
		var divinfo = '<embed src="../_clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
		document.getElementById(flashcopier).innerHTML = divinfo;		
	}
}
//==================================================================================================== 
//  Function Name : isHidden
//	# Created By: Richard Fernandes
//	# Created On: 18 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : checks if a an HTML element is hidden
//  Parameters: elemId : Id of the HTML element
//---------------------------------------------------------------------------------------------------- 
function isHidden(elemId) 
{ 
	var element = docObj(elemId);
	if(element.style.display == 'none' || element.style.visibility == 'hidden'){
		return true;
	}
	return false;
}

//==================================================================================================== 
//  Function Name : editable
//	# Created By: Richard Fernandes
//	# Created On: 19 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : makes an HTML input text element editable/non-editable
//  Parameters: 
//			elemId : Id of the HTML element
//			boolEditable : boolean value true or false
//---------------------------------------------------------------------------------------------------- 
function editable(elemId,boolEditable) 
{ 
	var element = docObj(elemId);
	if(boolEditable){element.readOnly = '';}
	else{element.readOnly = 'readonly';}
}

//==================================================================================================== 
//  Function Name : iHTML
//	# Created By: Richard Fernandes
//	# Created On: 19 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : assigns the innerHTML for an HTML element
//  Parameters: 
//			elemId : Id of the HTML element
//			HTML : the HTML to assign
//---------------------------------------------------------------------------------------------------- 
function iHTML(elemId,HTML) 
{ 
	var element = docObj(elemId);
	element.innerHTML = HTML;
}

//==================================================================================================== 
//  Function Name : removeElement
//	# Created By: Richard Fernandes
//	# Created On: 19 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : removes an HTML element from DOM
//  Parameters: 
//			elemId : Id of the HTML element
//---------------------------------------------------------------------------------------------------- 
function removeElement(elemId) 
{ 
	var element = docObj(elemId);
	element.parentNode.removeChild(element);
}

//==================================================================================================== 
//  Function Name : addAfter
//	# Created By: Richard Fernandes
//	# Created On: 19 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : 
//  Parameters: 
//---------------------------------------------------------------------------------------------------- 
function addAfter(newElementId,targetElementId) {
 	var newElement =  docObj(newElementId);
 	var targetElement = docObj(targetElementId);
	//target is what you want it to go after. Look for this elements parent.
	var parent = targetElement.parentNode;
	//if the parents lastchild is the targetElement...
	if(parent.lastchild == targetElement) {
		//add the newElement after the target element.
		parent.appendChild(newElement);
	} else {
		// else the target has siblings, insert the new element between the target and it's next sibling.
		parent.insertBefore(newElement, targetElement.nextSibling);
	}
}

//==================================================================================================== 
//  Function Name : getElementsByClassName
//	# Created By: Richard Fernandes
//	# Created On: 20 Jan 2008
//	Last Modified By:
//	Last modified On:
//  Purpose : to get HTML elements with a particular class name
//  Parameters: 
//---------------------------------------------------------------------------------------------------- 
function getElementsByClassName(classname, node)  {
   if(!node) node = document.getElementsByTagName("body")[0];
   var a = [];
   var re = new RegExp('\\b' + classname + '\\b');
   var els = node.getElementsByTagName("*");
   for(var i=0,j=els.length; i<j; i++)
       if(re.test(els[i].className))a.push(els[i]);
   return a;
}

//==================================================================================================== 
//  Function Name : toggleButtons
//	# Created By: Richard Fernandes
//	# Created On: Feb 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : enables/disables all buttons on a page
//	Parameters: state: [enable,disable]
//----------------------------------------------------------------------------------------------------   
function toggleButtons(state){
 	var arrBtns = document.getElementsByTagName('input');
 	
	for(i=0,j=arrBtns.length;i<j;i++){
		if(arrBtns[i].type == 'submit' || arrBtns[i].type == 'button' || arrBtns[i].type == 'image'){
			switch(state){
				case 'enable':
					arrBtns[i].disabled = false;
					break;
				case 'disable':
					arrBtns[i].disabled = true;
					break;
			}
		}
	}
}

//==================================================================================================== 
//  Function Name : rndString
//	# Created By: Richard Fernandes
//	# Created On: 02 Mar 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : generates a random string
//----------------------------------------------------------------------------------------------------   
function rndString(){
	return String((new Date()).getTime()).replace(/\D/gi,'');
}

//==================================================================================================== 
//  Function Name : hasOnlyAlphaNumSpaces
//	# Created By: Richard Fernandes
//	# Created On: 19 March 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : checks if the value has only alphabets, numbers and spaces, returns true in this case 
//  else returns false
//  Parameters: fld
//	string msg : Message if field is not valid
//---------------------------------------------------------------------------------------------------- 
function hasOnlyAlphaNumSpaces(fld,msg) 
{ 
	fld.value = Trim(fld.value);
	//regular expression for alphanumeric characters and spaces
 	var alphaNumSpace = /^[a-zA-Z\s\d]+$/i;
 	
	if(!alphaNumSpace.test(fld.value)) 
	{ 
		alert(msg); 
		fld.focus(); 
		return false; 
	} 
	return true; 
}

//==================================================================================================== 
//  Function Name : URLhasID
//	# Created By: Richard Fernandes
//	# Created On: 19 March 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : returns true if the URL has %%ID%% inserted properly, else returns false
//  Parameters: fld
//	string msg : Message if field is not valid
//---------------------------------------------------------------------------------------------------- 
function URLhasID(fld,msg) 
{ 
	fld.value = Trim(fld.value);
	
	//regular expressions to check if %%ID%% entered properly
 	//regular expressions for invalidating 
 	//var r1 = /^.*([^=]%%id%%)$/i; //%%ID%% has any character other than '=' before it, then invalid
 	var r2 = /.*(%%%id(\d*)%%).*/i;	//%%ID%% has % before it, then invalid
 	var r3 = /.*(%%id(\d*)%%%).*/i;	//%%ID%% has % after it then invalid
 	
 	//if any 1 of these conditions are satisfied, then invalid
	if(r2.test(fld.value) || r3.test(fld.value))
	{ 
		alert(msg); 
		fld.focus(); 
		return false; 
	} 
	return true; 
}

//==================================================================================================== 
//  Function Name : toggleView
//	# Created By: Richard Fernandes
//	# Created On: March 26 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : expand/collapse element
//	Parameters: elemId: element id
//				aTagId: id of the stat record
//----------------------------------------------------------------------------------------------------   
function toggleView(elemId,aTagId,onlyShow){
 	var expcollap = docObj(aTagId);
 	if(isHidden(elemId)){
		showTableRow(elemId);		
		expcollap.className = 'collapse_stat';	
	}
	else if(!onlyShow){
		hide(elemId);
		expcollap.className = 'expand_stat';
		docObj('expand_collapse_all').style.display = '';
		docObj('collapse_expand_all').style.display = 'none';
		docObj('expand_collapse_all').className = 'expand_stat';
	}
	
	var boolExpand = true;
	var ExColLinkRegex = /^expand_collapse[0-9]+$/i;
	var arrHref = docObj('statsTable').getElementsByTagName('A');
	
	for(i=0,j=arrHref.length;i<j;i++){
		if(ExColLinkRegex.test(arrHref[i].id)){		 	
			if(docObj(arrHref[i].id).className=='expand_stat'){			 	
				var boolExpand = false;
				break;
			}
		}
	}
	
	if(boolExpand==true){
		docObj('expand_collapse_all').style.display = 'none';
		docObj('collapse_expand_all').style.display = '';
		docObj('collapse_expand_all').className = 'collapse_stat';
	}
}

//==================================================================================================== 
//  Function Name : toggleViewAll
//	# Created By: Harsh Aghicha
//	# Created On: 2 April 09
//	Last Modified By:
//	Last modified On:
//  Purpose : expand/collapse all elements
//	Parameters: elemId: element id
//				aTagId: id of the stat record
//				toggleStatus: possible values - show/hide
//----------------------------------------------------------------------------------------------------   
function toggleViewAll(elemId,aTagId,toggleStatus){
 	var expcollap = docObj(aTagId);
 	if(isHidden(elemId) && toggleStatus=='showAll'){
		showTableRow(elemId);		
		expcollap.className = 'collapse_stat';	
	}
	else if(toggleStatus=='hideAll'){
		hide(elemId);
		expcollap.className = 'expand_stat';
	}
}

//==================================================================================================== 
//  Function Name : toggleAll
//	# Created By: Harsh Aghicha
//	# Created On: 2 April 09
//	Last Modified By:
//	Last modified On:
//  Purpose : expand/collapse based on option selected
//	Parameters: elemId: element id
//---------------------------------------------------------------------------------------------------- 
function toggleAll(elemId){ 	
	var ExColLinkRegex = /^expand_collapse[0-9]+$/i;
	var arrHref = docObj('statsTable').getElementsByTagName('A');
	
	for(i=0,j=arrHref.length;i<j;i++){
		if(ExColLinkRegex.test(arrHref[i].id)){
			var strS = new String(arrHref[i].id);
			if(elemId=='expand_collapse_all'){
			 	docObj('expand_collapse_all').className = 'collapse_stat';
			 	docObj('expand_collapse_all').style.display = 'none';
			 	docObj('collapse_expand_all').style.display = 'inline';
				toggleViewAll(strS.replace('expand_collapse','statsData'),arrHref[i].id,'showAll');				
			}
			else{
			 	docObj('expand_collapse_all').className = 'expand_stat';
			 	docObj('expand_collapse_all').style.display = 'inline';
			 	docObj('collapse_expand_all').style.display = 'none';
				toggleViewAll(strS.replace('expand_collapse','statsData'),arrHref[i].id,'hideAll');				
			}
		}
	}
}

//====================================================================================================
//  Function Name: showTableRow
//  Created By: Richard Fernandes
//  Created On: 13 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To unhide a table row
//  Parameters: elemId : Id of the HTML element
//----------------------------------------------------------------------------------------------------
function showTableRow(elemId){
	var element = docObj(elemId);
	element.style.display = '';
	element.style.visibility = 'visible';
}

//====================================================================================================
//  Function Name: addClass
//  Created By: Richard Fernandes
//  Created On: 13 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To assign a class to an element
//  Parameters: elemObj : Id of the HTML element
//----------------------------------------------------------------------------------------------------
function addClass(elemObj,className){
	elemObj.className = elemObj.className + ' ' + className;
}

//====================================================================================================
//  Function Name: removeClass
//  Created By: Richard Fernandes
//  Created On: 13 Feb 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : To remove a class to an element
//  Parameters: elemObj : Id of the HTML element
//----------------------------------------------------------------------------------------------------
function removeClass(elemObj,className){
	(elemObj.className).replace(className,'');
}

//==================================================================================================== 
//  Function Name : copySelectOptions 
//	# Created By: Richard Fernandes
//	# Created On:  4th April 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : 
//  Parameters: [srcSelectElemId: Id of the source select element,trgtSelectElemId: Id of the target select element]
//---------------------------------------------------------------------------------------------------- 
function copySelectOptions(srcSelectElemId,trgtSelectElemId){
	var srcSelectElement = docObj(srcSelectElemId);
	var trgtSelectElement = docObj(trgtSelectElemId);

	for(i=0;i<srcSelectElement.options.length;i++){
		if(srcSelectElement.options[i].selected){
		 	var duplicate = false;
		 	var item = document.createElement('OPTION');
		 	item.text = srcSelectElement.options[i].text;
		 	item.value = srcSelectElement.options[i].value;
		 	item.label = srcSelectElement.options[i].label;
		 	item.selected = false;
		 	//check if target has the element already
		 	for(j=0;j<trgtSelectElement.options.length;j++){
				if(trgtSelectElement.options[j].value==item.value){
					duplicate = true;
					break;
				}
			}
			if(!duplicate){
				try{trgtSelectElement.add(item,null);} // standards compliant
				catch(ex){trgtSelectElement.add(item);} // IE only
			}
		}
	}
}

//==================================================================================================== 
//  Function Name : removeSelectOptions 
//	# Created By: Richard Fernandes
//	# Created On:  4th April 2009
//	Last Modified By:
//	Last modified On:
//  Purpose : 
//  Parameters: [srcSelectElemId: Id of the source select element]
//---------------------------------------------------------------------------------------------------- 
function removeSelectOptions(srcSelectElemId){
	var srcSelectElement = docObj(srcSelectElemId);

	for(i=0;i<srcSelectElement.options.length;){
		if(srcSelectElement.options[i].selected){
			srcSelectElement.remove(i);
			i=0;
		}
		else{i++;}
	}
}

//====================================================================================================
//  Function Name : hideStatusMessage
//  Created By: Richard Fernandes	
//  Created On: 9 April 2009
//  Last Modified By: 
//  Last modified On: 
//  Purpose : hide message on any page activity
//  Parameters: elemId: elament id to be hidden
//----------------------------------------------------------------------------------------------------
function hideStatusMessage(elemId)
{
	document.body.onclick = document.body.onkeypress = function(){
		hide(elemId);
		document.body.onclick = null;
		document.body.onkeypress = null;
	}
}

/*#====================================================================================================
#  Function Name :  fnShowHideSubPublisherDisplay
#    Created By: Joy Ninan
#  Created On: 6 July 2009
#    Last Modified By:
#    Last modified On:
#  Purpose : To show and hide the Sub Publisher Details for Live and Closed Projects
#    Parameters:
#----------------------------------------------------------------------------------------------------
*/
function fnShowHideSubPublisherDisplay(intRowCount, intSubPublisherCount, intPublisherId, intQuotaGroupId, strClass, strOpenType, intCpiVal, strReviewedDate)
{
	var arrowImageCount = String('arrow_image_'+intRowCount);	
	var strRowName = "";
	var strGetSubPubTable = "";
	var strRowCheck = "";
	var intSubPubCountForCompleted = "";
	var strRegExp = "";

	if(intSubPublisherCount!='')
	{
		if(strOpenType=="L" || strOpenType=="C")
		{		
			strRowCheck = String("sub_pub_details_"+intQuotaGroupId+"_"+intRowCount+"_1");
			document.getElementById(arrowImageCount).src='images/ajax-loader.gif';
		}
		else if(strOpenType=="Completed")
		{
			strRowCheck =  String("sub_pub_count_"+intQuotaGroupId+"_"+intRowCount);			
			document.getElementById(arrowImageCount).src='images/ajax-loader.gif';
		}
		else if(strOpenType=="Report")
		{
			strRowCheck =  String("sub_pub_count_"+intQuotaGroupId+"_"+intRowCount);			
			document.getElementById(arrowImageCount).src='images/ajax-loader.gif';
		}		
		
		if(document.getElementById(strRowCheck))
		{
			if(strOpenType=="Completed" || strOpenType=="Report")
				intSubPubCount = document.getElementById(strRowCheck).value;
			else if(strOpenType=="L" || strOpenType=="C")
				intSubPubCount = intSubPublisherCount;
				
			for(n=0; n<intSubPubCount ; n++)
				{
					var strRowCount = parseInt(n)+1;
				strRowName = String("sub_pub_details_"+intQuotaGroupId+"_"+intRowCount+"_"+strRowCount);
					if(document.getElementById(strRowName).style.display == '')
					{
						document.getElementById(strRowName).style.display = 'none';
						document.getElementById(arrowImageCount).src = 'images/expand.gif';				
					}
					else if(document.getElementById(strRowName).style.display == 'none')
					{
						document.getElementById(strRowName).style.display = '';
						document.getElementById(arrowImageCount).src = 'images/collapse.gif';		
					}				
				}
			
			return false;
			}
		
		$.get("ajaxSubPublisherDetails.php", 
		{ publisher_id : intPublisherId, quota_group_id : intQuotaGroupId, main_row_count : intRowCount, sub_pub_count : intSubPublisherCount, class_type : strClass, flag : strOpenType, cpi_val : intCpiVal, reviewed_date : strReviewedDate },		

		  function(data)
			{
			document.getElementById(arrowImageCount).src='images/ajax-loader.gif';
			strResponse = data.split("||");
			strReplaceSubPubDetails = String("sub_pub_details_"+intQuotaGroupId+"_"+intRowCount);
			strGetSubPubTable = document.getElementById('tbl_SubPublisher_Earning').innerHTML;
			strGetData = strGetSubPubTable.replace("<!--"+strReplaceSubPubDetails+"-->",strResponse);
			document.getElementById('tbl_SubPublisher_Earning').innerHTML = strGetData;
			document.getElementById(arrowImageCount).src = 'images/collapse.gif';
		  },'text');
		}	
}

//====================================================================================================
//    Function Name    :    validate2Digit()
//    Created By: Abhijit Fadte
//    Created On: 20 Feb 2009
//    Last Modified By: 
//    Last modified On: 
//  Purpose : 
//  Parameters: 
//----------------------------------------------------------------------------------------------------
function validate2Digit(element,msg){
    var number=element.value;
    var k,newvalue;
    k=number.match(/^\d+\.?\d*$/);
    if(k!=undefined){
        newvalue=Math.round(k[0]*100)/100;
        element.value=newvalue;
    }
    else{
      alert(msg);
      element.focus();
      return false;
    }
  return true;
}
/*
#====================================================================================================
#  Function Name    :    explode()
#  Created By: Abhay Deotare
#  Created On: 05 Aug 2009
#  Last Modified By:
#  Last modified On:
#  Purpose : Function to explode string into an array 
#----------------------------------------------------------------------------------------------------
*/
function explode( delimiter, string, limit ) {
 
    var emptyArray = { 0: '' };
    
    // third argument is not required
    if ( arguments.length < 2
        || typeof arguments[0] == 'undefined'
        || typeof arguments[1] == 'undefined' )
    {
        return null;
    }
 
    if ( delimiter === ''
        || delimiter === false
        || delimiter === null )
    {
        return false;
    }
 
    if ( typeof delimiter == 'function'
        || typeof delimiter == 'object'
        || typeof string == 'function'
        || typeof string == 'object' )
    {
        return emptyArray;
    }
 
    if ( delimiter === true ) {
        delimiter = '1';
    }
    
    if (!limit) {
        return string.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}
/*
#====================================================================================================
#  Function Name    :    fnHideMessageDiv(messageID)
#  Created By: Abhay Deotare
#  Created On: 23 Dec 2009
#  Last Modified By:
#  Last modified On:
#  Purpose : Function to Hide Message Div 
#----------------------------------------------------------------------------------------------------
*/
function fnHideMessageDiv(messageID)
{
	document.getElementById(messageID).style.display='none';
}


//==================================================================================================== 
//  Function Name : fnDeselectRadio
//	# Created By: Richard Fernandes
//	# Created On: 21st January 2010
//	Last Modified By:
//	Last modified On:
//  Purpose : to allow for deselection of a radio button, to be called on mousedown event of a radion button
//  Parameters: rdObj: radio button object
//----------------------------------------------------------------------------------------------------  
function fnDeselectRadio(rdObj){
	var reqState;
	if(rdObj.checked){rdObj.checked = reqState = false;}
	else{rdObj.checked = reqState = true;}
	rdObj.onclick = function(){this.checked = reqState;}
}