// JavaScript Document
	/*alert(document.getElementById('onrev_frame_url'));
	if(window.parent.parent.document.getElementById('onrev_frame')){
		alert( window.parent.parent.location);
		document.getElementById('onrev_frame_url').value = window.parent.parent.location;
	}
	if(window.parent.document.getElementById('onrev_frame')){
		alert( window.parent.location);
		document.getElementById('onrev_frame_url').value = window.parent.location;
	}
	*/

	/**
	 * Class general 
	 */
	
	function in_array(p_val,val_array){
		var l = val_array.length
		for(var i = 0; i < l; i++) {
			if(val_array[i] == p_val) {
				//alert(val_array[i]);
				return true;
			}
		}
		return false;

	}
	
	function ltrim(str) { 
		for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
		return str.substring(k, str.length);
	}
	
	function rtrim(str) {
		for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
		return str.substring(0,j+1);
	}
	
	function trim(str) {
		return ltrim(rtrim(str));
	}
	function isWhitespace(charToCheck) {
		var whitespaceChars = " \t\n\r\f";
		return (whitespaceChars.indexOf(charToCheck) != -1);
	}
	/* get element by id */
	function getDivByID(layerID) {
		if (document.getElementById) {
			// this is the way the standards work
			return document.getElementById(layerID);
		} else if (document.all) {
			// this is the way old msie versions work
			return document.all[layerID];
		} else if (document.layers){
			// this is the way nn4 works
			return document.layers[layerID];
		}
		return null;
	}

	function general(){
	};
	general.prototype.makePOSTRequestCommon = function (url, parameters, id) {
		var id = id;
		//var	http_request = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/html');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!http_request) {
			alert('Cannot create XMLHTTP instance');
			return false;
		}
		http_request.onreadystatechange = function alertContents_01(){
			if (http_request.readyState == 4) {
				if (http_request.status == 200) {
					result = http_request.responseText;
					if(url	==	'http://www.OnRevenue.us/components/com_company/ajaxcalls.php?what2do=CHECKURLAVAILABILITY'){
						alert(strip_tags(result));
					}
					//alert(result);
					if(document.getElementById(id).innerHTML){
						document.getElementById(id).innerHTML = result; 
					}else if(document.getElementById(id).value){
						document.getElementById(id).value = result; 
					}else{
						document.getElementById(id).value = result; 
					}
				} else {
					document.getElementById(id).innerHTML = 'There was a problem with the request.';  
				}
			}
			};
		http_request.open('POST', url, true);
		http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http_request.setRequestHeader("Content-length", parameters.length);
		http_request.setRequestHeader("Connection", "close");
		http_request.send(parameters);
		
	};
	
	general.prototype.fncLoadSubIndustry = function (strid) {
		var poststr = "subindustry="+encodeURI( strid );
		//general.makePOSTRequestCommon('./components/com_company/ajaxcalls.php?what2do=LISTSUBCATEGORY', poststr, "divsubindustry");		
	}
	
	general.prototype.__fncCheckAvailability = function (strPageName, strid) {
		if(trim(document.josForm.company_pagename.value) == ""){
			alert('Please  enter desired URL for your company webpge');
			document.josForm.company_pagename.select();return;
		}
		if( document.josForm.company_pagename.value.length <= 5 ){
			alert('The webpage name must be 6 chars length.');
			document.josForm.company_pagename.select();return;
		}
		if(!isAlphaNumeric(document.josForm.company_pagename.value) ){
			alert('Please use alphanumeric character for your webpage name.');
			document.josForm.company_pagename.select();
			return false;
		}
		getDivByID('divShowURLAvailabilityMsg').style.display='block';
		getDivByID('divShowURLAvailability').style.display='block';
		getDivByID('divShowURLAvailability').innerHTML ='<img src="http://www.OnRevenue.us/components/com_company/images/ajax-loader.gif"/>  Loading...';
		var poststr = "company_pagename="+encodeURI( strPageName )+"&id="+encodeURI( strid );
		general.makePOSTRequestCommon('http://www.OnRevenue.us/components/com_company/ajaxcalls.php?what2do=CHECKURLAVAILABILITY', poststr, "divShowURLAvailability");		
		//general.makePOSTRequestCommon('http://192.168.0.169/onrevenue/onrevenue/trunk/components/com_company/ajaxcalls.php?what2do=CHECKURLAVAILABILITY', poststr, "divShowURLAvailability");		
	}
	function isAlphaNumeric(val){
		if (val.match(/^[a-zA-Z0-9-_]+$/)){
			return true;
		} else {
			return false;
		} 
	}
	general.prototype.__fncCheckURLAvailability = function (strPageName, strid) {
		if(trim(document.adminForm.company_pagename.value) == ""){
			alert('Please  enter desired URL for your company webpge');
			document.adminForm.company_pagename.select();return;
		}
		if( document.adminForm.company_pagename.value.length <= 5 ){
			alert('The webpage name must be 6 chars length.');
			document.adminForm.company_pagename.select();return;
		}
		if(!isAlphaNumeric(document.adminForm.company_pagename.value) ){
			alert('Please use alphanumeric character for your webpage name.');
			document.adminForm.company_pagename.select();
			return false;
		}
		getDivByID('divShowURLAvailability').style.display='block';
		getDivByID('divShowURLAvailability').innerHTML ='<img src="http://www.OnRevenue.us/components/com_company/images/ajax-loader.gif"/>  Loading...';
		var poststr = "company_pagename="+encodeURI( strPageName )+"&id="+encodeURI( strid );
		general.makePOSTRequestCommon('./../components/com_company/ajaxcalls.php?what2do=CHECKURLAVAILABILITY', poststr, "divShowURLAvailability");		
	}
	
	
	general.prototype.__fncCheckCOPYURLAvailability = function (strPageName) {
		if(trim(document.adminForm.new_webpage_name.value) == ""){
			alert('Please  enter desired URL for your company webpge');
			document.adminForm.new_webpage_name.select();return;
		}
		if( document.adminForm.new_webpage_name.value.length <= 5 ){
			alert('The webpage name must be 6 chars length.');
			document.adminForm.new_webpage_name.select();return;
		}
		if(!isAlphaNumeric(document.adminForm.new_webpage_name.value) ){
			alert('Please use alphanumeric character for your webpage name.');
			document.adminForm.new_webpage_name.select();
			return false;
		}
		getDivByID('divShowURLAvailability').style.display='block';
		getDivByID('divShowURLAvailability').innerHTML ='<img src="http://www.OnRevenue.us/components/com_company/images/ajax-loader.gif"/>  Loading...';
		var poststr = "company_pagename="+encodeURI( strPageName ) ;
		general.makePOSTRequestCommon('./../components/com_company/ajaxcalls.php?what2do=CHECK_COPY_URLAVAILABILITY', poststr, "divShowURLAvailability");		
	}
	
	
	general.prototype.__fncShowSuccessStory = function (DivId) {
		var divReadMore = DivId+'_link'
		if(getDivByID(DivId).style.display == 'block'){
			getDivByID(DivId).style.display = 'none';
			getDivByID(divReadMore).innerHTML = "<a href=\"javascript:void(0);\" onClick=\"javascript:general.__fncShowSuccessStory('"+DivId+"');\"><b>Read More >></b> </a>";
		}else{
			getDivByID(DivId).style.display = 'block';
			getDivByID(divReadMore).innerHTML = '';
		}
	}
	
	general.prototype.__fncShowBlogDetails = function (DivId, strText) {
		var divReadMore = DivId+'_link'
		if(getDivByID(DivId).style.display == 'block'){
			getDivByID(DivId).style.display = 'none';
			getDivByID(divReadMore).innerHTML = strText + " <a href=\"javascript:void(0);\" onClick=\"javascript:general.__fncShowSuccessStory('"+DivId+"');\">Read More >> </a>";
		}else{
			getDivByID(DivId).style.display = 'block';
			getDivByID(divReadMore).innerHTML = '';
		}
	}
	
	/**
	 * Object Created for General class
	 */
	var general = new general();
	
	
	/****** Date Validation **********/
	function compareDates(startDate,endDate){
		var point1=0;var point2=0;
		var arrDate1 = startDate.split("-");
		var useDate1 = new Date(arrDate1[2], arrDate1[1]-1, arrDate1[0]);
		var arrDate2 = endDate.split("-");
		var useDate2 = new Date(arrDate2[2], arrDate2[1]-1, arrDate2[0]);
		var day1=arrDate1[2];
		var month1=arrDate1[1]-1;
		var year1=arrDate1[0];
		var day2=arrDate2[2];
		var month2=arrDate2[1]-1;
		var year2=arrDate2[0];
		if(year1>year2) point1++; else if(year1<year2) point2++; else {point1++;point2++;}
		if(month1>month2 && point1>0) point1++; else if(month1<month2 && point2>0) point2++; else {point1++;point2++;}
		if(day1>day2 && point1>1) point1++; else if(day1<day2 && point2>1) point2++; else {point1++;point2++;}
		
		if(point1>point2) return 0;
			else if(point1<=point2 ) return 1;
	}
	
	function __fncClearForm()
	{
		getDivByID('fname').value = '';
		getDivByID('lname').value = '';
		getDivByID('contact_phone1').value = '';
		getDivByID('contact_phone2').value = '';
		getDivByID('besttimetocall').value = '';
		getDivByID('email').value = '';
		getDivByID('message').value = '';
	}
	
	/**
	 * Check the Email is valid one 
	 * @email, email to be validated.
	 */
	function isValidEmail(email) {
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (filter.test(email)){
			return true;
		}else{
			return false;
		}
	}
	
	// Validate appoinment menu
	function __fncValidateForm()
	{
		if( getDivByID("fname").value == '' ){
			getDivByID("fname").className = 'inputbox required invalid';
			getDivByID("fnamemsg").className = 'invalid';
			getDivByID("fname").select();
			return false;
		}else{
			getDivByID("fname").className = 'inputbox required';
			getDivByID("fnamemsg").className = '';
		}
		if( getDivByID("lname").value == '' ){
			getDivByID("lname").className = 'inputbox required invalid';
			getDivByID("lnamemsg").className = 'invalid';
			getDivByID("lname").select();
			return false;
		}else{
			getDivByID("lname").className = 'inputbox required';
			getDivByID("lnamemsg").className = '';
		}
		if( getDivByID("email").value == '' ){
			getDivByID("email").className = 'inputbox required invalid';
			getDivByID("emailmsg").className = 'invalid';
			getDivByID("email").select();
			return false;
		}else{
			getDivByID("email").className = 'inputbox required';
			getDivByID("emailmsg").className = '';
		}
		if(trim(getDivByID("email").value) != '') {
			if(!isValidEmail(trim(getDivByID("email").value))){
				getDivByID("email").className = 'inputbox required invalid';
				getDivByID("emailmsg").className = 'invalid';
				getDivByID("email").select()
				return false;	
			}else{
				getDivByID("email").className = 'inputbox required';
				getDivByID("emailmsg").className = '';
			}
		}
		getDivByID('josForm').submit();
	}
	
		
	/**
	 * Accept numbers only 
	 * @inputfeild, field to be check 
	 * @e, event 
	 * @dec = true OR false , indicate if accept decimal 
	 */
	function acceptnumbersonly(inputfeild, e, dec) {
		var key;
		var keychar;
		
		if (window.event)
			 key = window.event.keyCode;
		else if (e)
			 key = e.which;
		else
			 return true;
		keychar = String.fromCharCode(key);
		
		var val = inputfeild.value;
		if(val && keychar == '.'){
			if(val.split(".").length > 1){
				return false;
			}
		}
		// control keys
		if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
			 return true;
		// numbers
		else if ((("0123456789").indexOf(keychar) > -1))
			 return true;
		// decimal point jump
		else if ((dec) && (keychar == ".")) {
			 //inputfeild.form.elements[dec].focus();
		 return true;
		 }	else
			 return false;
	}
	
	// Register Web page validations
	function __fncValidateRegisterSubscribeForm(strSubscribe)
	{
		if( trim(getDivByID("fname").value) == '' ){
			getDivByID("fname").className = 'inputbox required invalid';
			getDivByID("fnamemsg").className = 'invalid';
			getDivByID("fname").select();
			return false;
		}else{
			getDivByID("fname").className = 'inputbox required';
			getDivByID("fnamemsg").className = '';
		}
		if( trim(getDivByID("email").value) == '' ){
			getDivByID("email").className = 'inputbox required invalid';
			getDivByID("emailmsg").className = 'invalid';
			getDivByID("email").select();
			return false;
		}else{
			getDivByID("email").className = 'inputbox required';
			getDivByID("emailmsg").className = '';
		}
		if(trim(getDivByID("email").value) != '') {
			if(!isValidEmail(trim(getDivByID("email").value))){
				getDivByID("email").className = 'inputbox required invalid';
				getDivByID("emailmsg").className = 'invalid';
				getDivByID("email").select()
				return false;	
			}else{
				getDivByID("email").className = 'inputbox required';
				getDivByID("emailmsg").className = '';
			}
		}
		getDivByID("task").value = strSubscribe;
		getDivByID('josForm').submit();
	}
	
	
	function __fncValidateReferralnewForm(strSubscribe)
	{
		if( trim(getDivByID("first_name").value) == '' ){
			getDivByID("first_name").className = 'inputbox required invalid';
			getDivByID("first_namemsg").className = 'invalid';
			getDivByID("first_name").select();
			return false;
		}else{
			getDivByID("first_name").className = 'inputbox required';
			getDivByID("first_namemsg").className = '';
		}
		if( trim(getDivByID("last_name").value) == '' ){
			getDivByID("last_name").className = 'inputbox required invalid';
			getDivByID("last_namemsg").className = 'invalid';
			getDivByID("last_name").select();
			return false;
		}else{
			getDivByID("last_name").className = 'inputbox required';
			getDivByID("last_namemsg").className = '';
		}
		if( trim(getDivByID("email").value) == '' ){
			getDivByID("email").className = 'inputbox required invalid';
			getDivByID("emailmsg").className = 'invalid';
			getDivByID("email").select();
			return false;
		}else{
			getDivByID("email").className = 'inputbox required';
			getDivByID("emailmsg").className = '';
		}
		if(trim(getDivByID("email").value) != '') {
			if(!isValidEmail(trim(getDivByID("email").value))){
				getDivByID("email").className = 'inputbox required invalid';
				getDivByID("emailmsg").className = 'invalid';
				getDivByID("email").select()
				return false;	
			}else{
				getDivByID("email").className = 'inputbox required';
				getDivByID("emailmsg").className = '';
			}
		}
		if( trim(getDivByID("phone").value) == '' ){
			getDivByID("phone").className = 'inputbox required invalid';
			getDivByID("phonemsg").className = 'invalid';
			getDivByID("phone").select();
			return false;
		}else{
			getDivByID("phone").className = 'inputbox required';
			getDivByID("phonemsg").className = '';
		}
		getDivByID("task").value = strSubscribe;
		getDivByID('josForm').submit();
	}
	
	// Register Web page validations
	function __fncValidateRegisterSubscribereferralForm(strSubscribe)
	{
		if( trim(getDivByID("fname").value) == '' ){
			getDivByID("fname").className = 'inputbox required invalid';
			getDivByID("fnamemsg").className = 'invalid';
			getDivByID("fname").select();
			return false;
		}else{
			getDivByID("fname").className = 'inputbox required';
			getDivByID("fnamemsg").className = '';
		}
		if( trim(getDivByID("phone").value) == '' ){
			getDivByID("phone").className = 'inputbox required invalid';
			getDivByID("phonemsg").className = 'invalid';
			getDivByID("phone").select();
			return false;
		}else{
			getDivByID("phone").className = 'inputbox required';
			getDivByID("phonemsg").className = '';
		}
		
		if( trim(getDivByID("email").value) == '' ){
			getDivByID("email").className = 'inputbox required invalid';
			getDivByID("emailmsg").className = 'invalid';
			getDivByID("email").select();
			return false;
		}else{
			getDivByID("email").className = 'inputbox required';
			getDivByID("emailmsg").className = '';
		}
		if(trim(getDivByID("email").value) != '') {
			if(!isValidEmail(trim(getDivByID("email").value))){
				getDivByID("email").className = 'inputbox required invalid';
				getDivByID("emailmsg").className = 'invalid';
				getDivByID("email").select()
				return false;	
			}else{
				getDivByID("email").className = 'inputbox required';
				getDivByID("emailmsg").className = '';
			}
		}
		getDivByID("task").value = strSubscribe;
		getDivByID('josForm').submit();
	}
	
	/*Calendar functions --- Start here*/
	function fncChnageCellTheme(divRequest)
	{
		var strClass = getDivByID(divRequest).className;

		if(strClass == 'clsCalendarCellRequest'){
			getDivByID(divRequest).className = 'clsCalendarCellRequest_out';	
		}else{
			getDivByID(divRequest).className = 'clsCalendarCellRequest';	
		}
		
	}
  	/*Calendar functions --- End here*/
function strip_tags (str, allowed_tags) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Luke Godfrey
    // +      input by: Pul
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +      input by: Alex
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Marc Palau
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Eric Nagel
    // +      input by: Bobby Drake
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Tomasz Wesolowski
    // *     example 1: strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>');
    // *     returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
    // *     example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
    // *     returns 2: '<p>Kevin van Zonneveld</p>'
    // *     example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
    // *     returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
    // *     example 4: strip_tags('1 < 5 5 > 1');
    // *     returns 4: '1 < 5 5 > 1'
 
    var key = '', allowed = false;
    var matches = [];
    var allowed_array = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = '';
 
    var replacer = function (search, replace, str) {
        return str.split(search).join(replace);
    };
 
    // Build allowes tags associative array
    if (allowed_tags) {
        allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
    }
 
    str += '';
 
    // Match tags
    matches = str.match(/(<\/?[\S][^>]*>)/gi);
 
    // Go through all HTML tags
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;
        }
 
        // Save HTML tag
        html = matches[key].toString();
 
        // Is tag not in allowed list? Remove from str!
        allowed = false;
 
        // Go through all allowed tags
        for (k in allowed_array) {
            // Init
            allowed_tag = allowed_array[k];
            i = -1;
 
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}
 
            // Determine
            if (i == 0) {
                allowed = true;
                break;
            }
        }
 
        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }
 
    return str;
}

function checkPhone(str) 
{
	var phone2 = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{3}(-{0,1}|\s{0,1})\d{4}$/; 
	if (str.match(phone2)) {
   		return true;
 	} else {
 		return false;
 	}
}


// Register Web page validations
	function __fncValidateRegisterEventForm(strAttendee_status)
	{
		if( trim(getDivByID("attendee_fame").value) == '' ){
			getDivByID("attendee_fame").className = 'inputbox required invalid';
			getDivByID("attendee_famemsg").className = 'invalid';
			getDivByID("attendee_fame").select();
			return false;
		}else{
			getDivByID("attendee_fame").className = 'inputbox required';
			getDivByID("attendee_famemsg").className = '';
		}
		if( trim(getDivByID("attendee_lname").value) == '' ){
			getDivByID("attendee_lname").className = 'inputbox required invalid';
			getDivByID("attendee_lnamemsg").className = 'invalid';
			getDivByID("attendee_lname").select();
			return false;
		}else{
			getDivByID("attendee_lname").className = 'inputbox required';
			getDivByID("attendee_lnamemsg").className = '';
		} 
		if( trim(getDivByID("email_id").value) == '' ){
			getDivByID("email_id").className = 'inputbox required invalid';
			getDivByID("email_idmsg").className = 'invalid';
			getDivByID("email_id").select();
			return false;
		}else{
			getDivByID("email_id").className = 'inputbox required';
			getDivByID("email_idmsg").className = '';
		}
		if(trim(getDivByID("email_id").value) != '') {
			if(!isValidEmail(trim(getDivByID("email_id").value))){
				getDivByID("email_id").className = 'inputbox required invalid';
				getDivByID("email_idmsg").className = 'invalid';
				getDivByID("email_id").select()
				return false;	
			}else{
				getDivByID("email_id").className = 'inputbox required';
				getDivByID("email_idmsg").className = '';
			}
		}
		if( trim(getDivByID("attendee_phone").value) == '' ){
			getDivByID("attendee_phone").className = 'inputbox required invalid';
			getDivByID("attendee_phonemsg").className = 'invalid';
			getDivByID("attendee_phone").select();
			return false;
		}else{
			getDivByID("attendee_lname").className = 'inputbox required';
			getDivByID("attendee_lnamemsg").className = '';
		} 
		
		getDivByID("attendee_status").value = strAttendee_status;
		getDivByID('josForm').submit();
	}
	
	/* Admin Function for Upgrade Compan Package --- start here*/
	function fncUpgradeCompanyPackage(strUrl, user_id, company_id, package_to_upgrade, strDivId, strDivCount){ 
		if(confirm('Do you want to Upgrade?')) {
				// Hide all other ticked Div
				for(i=1; i<= strDivCount; i++){ 
					if(  $("divPackStatus"+i) ){
						if(  $("divPackStatus"+i).style.display == 'block' && $("divPackStatus"+i) != $("divPackStatus"+strDivId) ){
							$("divPackStatus"+i).style.display = 'none';
						} 
					}
				}
				$("divPackStatus"+strDivId).innerHTML = '<div align="center" style="padding-top:10px;"><img src="./../components/com_company/images/spinner.gif"><br>Loading...</div>'; 
				var url = strUrl;
				var ajax = new Ajax(url, { 
					update: $("divPackStatus"+strDivId),
					method: 'post',
					data:{"user_id":user_id, "company_id":company_id, "package_to_upgrade": package_to_upgrade},
					onSuccess: function(responseText, responseXML) { 
					},
					onCancel: function() {
						// when we stop timed ajax while it's requesting
						// we forse to cancel the request, so here we
						// just remove the spinner
						log.removeClass('ajax-loading'); 
					} 
				});
				ajax.request(); 
			}
	}
	/* Admin Function for Upgrade Compan Package --- start here*/
