function LTrim(str){
        if (str==null){return null;}
        for(var i=0;str.charAt(i)==" ";i++);
        return str.substring(i,str.length);
        }
function RTrim(str){
        if (str==null){return null;}
        for(var i=str.length-1;str.charAt(i)==" ";i--);
        return str.substring(0,i+1);
        }
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str) {
        if (str==null){return str;}
        for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
        return str.substring(i,str.length);
        }
function RTrimAll(str) {
        if (str==null){return str;}
        for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
        return str.substring(0,i+1);
        }
function TrimAll(str) {
        return LTrimAll(RTrimAll(str));
        }
//-------------------------------------------------------------------
// isNull(value)
//   Returns true if value is null
//-------------------------------------------------------------------
function isNull(val){return(val==null);}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
        if(val==null){return true;}
        for(var i=0;i<val.length;i++) {
                if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
                }
        return true;
        }

//-------------------------------------------------------------------
// isInteger(value)
//   Returns true if value contains all digits
//-------------------------------------------------------------------
function isInteger(val){
        if (isBlank(val)){return false;}
        for(var i=0;i<val.length;i++){
                if(!isDigit(val.charAt(i))){return false;}
                }
        return true;
        }

//-------------------------------------------------------------------
// isNumeric(value)
//   Returns true if value contains a positive float value
//-------------------------------------------------------------------
function isNumeric(val){return(parseFloat(val,10)==(val*1));}

//-------------------------------------------------------------------
// isArray(obj)
// Returns true if the object is an array, else false
//-------------------------------------------------------------------
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
        if (num.length>1){return false;}
        var string="1234567890";
        if (string.indexOf(num)!=-1){return true;}
        return false;
        }

//-------------------------------------------------------------------
// setNullIfBlank(input_object)
//   Sets a form field to "" if it isBlank()
//-------------------------------------------------------------------
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}

//-------------------------------------------------------------------
// setFieldsToUpperCase(input_object)
//   Sets value of form field toUpperCase() for all fields passed
//-------------------------------------------------------------------
function setFieldsToUpperCase(){
        for(var i=0;i<arguments.length;i++) {
                arguments[i].value = arguments[i].value.toUpperCase();
                }
        }

//-------------------------------------------------------------------
// disallowBlank(input_object[,message[,true]])
//   Checks a form field for a blank value. Optionally alerts if 
//   blank and focuses
//-------------------------------------------------------------------
function disallowBlank(obj){
        var msg=(arguments.length>1)?arguments[1]:"";
        var dofocus=(arguments.length>2)?arguments[2]:false;
        if (isBlank(getInputValue(obj))){
                if(!isBlank(msg)){alert(msg);}
                if(dofocus){
                        if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
                        if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
                        obj.focus();
                        }
                return true;
                }
        return false;
        }

//-------------------------------------------------------------------
// disallowModify(input_object[,message[,true]])
//   Checks a form field for a value different than defaultValue. 
//   Optionally alerts and focuses
//-------------------------------------------------------------------
function disallowModify(obj){
        var msg=(arguments.length>1)?arguments[1]:"";
        var dofocus=(arguments.length>2)?arguments[2]:false;
        if (getInputValue(obj)!=getInputDefaultValue(obj)){
                if(!isBlank(msg)){alert(msg);}
                if(dofocus){
                        if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
                        if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
                        obj.focus();
                        }
                setInputValue(obj,getInputDefaultValue(obj));
                return true;
                }
        return false;
        }

//-------------------------------------------------------------------
// commifyArray(array[,delimiter])
//   Take an array of values and turn it into a comma-separated string
//   Pass an optional second argument to specify a delimiter other than
//   comma.
//-------------------------------------------------------------------
function commifyArray(obj,delimiter){
        if (typeof(delimiter)=="undefined" || delimiter==null) {
                delimiter = ",";
                }
        var s="";
        if(obj==null||obj.length<=0){return s;}
        for(var i=0;i<obj.length;i++){
                s=s+((s=="")?"":delimiter)+obj[i].toString();
                }
        return s;
        }

//-------------------------------------------------------------------
// getSingleInputValue(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputValue(obj,use_default,delimiter) {
        switch(obj.type){
                case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);
                case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
                case 'password': return((use_default)?null:obj.value);
                case 'select-one':
                        if (obj.options==null) { return null; }
                        if(use_default){
                                var o=obj.options;
                                for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
                                return o[0].value;
                                }
                        if (obj.selectedIndex<0){return null;}
                        return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;
                case 'select-multiple': 
                        if (obj.options==null) { return null; }
                        var values=new Array();
                        for(var i=0;i<obj.options.length;i++) {
                                if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
                                        values[values.length]=obj.options[i].value;
                                        }
                                }
                        return (values.length==0)?null:commifyArray(values,delimiter);
                }
        alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
        return null;
        }

//-------------------------------------------------------------------
// getSingleInputText(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputText(obj,use_default,delimiter) {
        switch(obj.type){
                case 'radio': case 'checkbox':  return "";
                case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
                case 'password': return((use_default)?null:obj.value);
                case 'select-one':
                        if (obj.options==null) { return null; }
                        if(use_default){
                                var o=obj.options;
                                for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
                                return o[0].text;
                                }
                        if (obj.selectedIndex<0){return null;}
                        return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;
                case 'select-multiple': 
                        if (obj.options==null) { return null; }
                        var values=new Array();
                        for(var i=0;i<obj.options.length;i++) {
                                if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
                                        values[values.length]=obj.options[i].text;
                                        }
                                }
                        return (values.length==0)?null:commifyArray(values,delimiter);
                }
        alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
        return null;
        }

//-------------------------------------------------------------------
// setSingleInputValue(input_object,value)
//   Utility function used by others
//-------------------------------------------------------------------
function setSingleInputValue(obj,value) {
        switch(obj.type){
                case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}
                case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;
                case 'select-one': case 'select-multiple': 
                        var o=obj.options;
                        for(var i=0;i<o.length;i++){
                                if(o[i].value==value){o[i].selected=true;}
                                else{o[i].selected=false;}
                                }
                        return true;
                }
        alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
        return false;
        }

//-------------------------------------------------------------------
// getInputValue(input_object[,delimiter])
//   Get the value of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputValue(obj,delimiter) {
        var use_default=(arguments.length>2)?arguments[2]:false;
        if (isArray(obj) && (typeof(obj.type)=="undefined")) {
                var values=new Array();
                for(var i=0;i<obj.length;i++){
                        var v=getSingleInputValue(obj[i],use_default,delimiter);
                        if(v!=null){values[values.length]=v;}
                        }
                return commifyArray(values,delimiter);
                }
        return getSingleInputValue(obj,use_default,delimiter);
        }

//-------------------------------------------------------------------
// getInputText(input_object[,delimiter])
//   Get the displayed text of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputText(obj,delimiter) {
        var use_default=(arguments.length>2)?arguments[2]:false;
        if (isArray(obj) && (typeof(obj.type)=="undefined")) {
                var values=new Array();
                for(var i=0;i<obj.length;i++){
                        var v=getSingleInputText(obj[i],use_default,delimiter);
                        if(v!=null){values[values.length]=v;}
                        }
                return commifyArray(values,delimiter);
                }
        return getSingleInputText(obj,use_default,delimiter);
        }

//-------------------------------------------------------------------
// getInputDefaultValue(input_object[,delimiter])
//   Get the default value of any form input field when it was created
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}

//-------------------------------------------------------------------
// isChanged(input_object)
//   Returns true if input object's value has changed since it was
//   created.
//-------------------------------------------------------------------
function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}

//-------------------------------------------------------------------
// setInputValue(obj,value)
//   Set the value of any form field. In cases where no matching value
//   is available (select, radio, etc) then no option will be selected
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function setInputValue(obj,value) {
        var use_default=(arguments.length>1)?arguments[1]:false;
        if(isArray(obj)&&(typeof(obj.type)=="undefined")){
                for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}
                }
        else{setSingleInputValue(obj,value);}
        }
        
//-------------------------------------------------------------------
// isFormModified(form_object,hidden_fields,ignore_fields)
//   Check to see if anything in a form has been changed. By default
//   it will check all visible form elements and ignore all hidden 
//   fields. 
//   You can pass a comma-separated list of field names to check in
//   addition to visible fields (for hiddens, etc).
//   You can also pass a comma-separated list of field names to be
//   ignored in the check.
//-------------------------------------------------------------------
function isFormModified(theform,hidden_fields,ignore_fields){

        if(hidden_fields==null){hidden_fields="";}
        if(ignore_fields==null){ignore_fields="";}
        var hiddenFields=new Object();
        var ignoreFields=new Object();
        var i,field;
        var hidden_fields_array=hidden_fields.split(',');
        for (i=0;i<hidden_fields_array.length;i++) {
                hiddenFields[Trim(hidden_fields_array[i])]=true;
                }
        var ignore_fields_array=ignore_fields.split(',');
        for (i=0;i<ignore_fields_array.length;i++) {
                ignoreFields[Trim(ignore_fields_array[i])]=true;
                }
        for (i=0;i<theform.elements.length;i++) {
                var changed=false;
                var name=theform.elements[i].name;
                if(!isBlank(name)){
                        var type=theform.elements[i].type;
                        if(!ignoreFields[name]){
                                if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}
                                else if(type=="hidden"){changed=false;}
                                else {changed=isChanged(theform[name]);}
                                }
                        }
                if(changed){return true;}
                }
                return false;
        }
	
function load_page($temp)
{
window.location.href=$temp;
}

function recheck_url($temp)
{
$company_website_url=document.link_system.company_website_url.value;
$link_target=document.link_system.link_target.value;
window.location.href=$temp+"?"+"company_website_url="+$company_website_url+"&link_target="+$link_target;

}

function recheck_link_target_url($temp)
{
alert ("inside recheck link target");
$company_website_url=document.link_system.company_website_url.value;
$link_target=document.link_system.link_target.value;
alert ($temp+"#link_target?"+"company_website_url="+$company_website_url+"&link_target="+$link_target);
window.location.href=$temp+"#link_target?"+"company_website_url="+$company_website_url+"&link_target="+$link_target;
}

function warn_save_changes()
{
alert("Your link has already been submitted for approval. Since your link is not currenly under review, any changes made to your link submission will be made available to the Link evaluator");
}

function warn_under_review()
{
alert("Your link is currently under review, which means someone is actually looking at the content for your link and deciding whether it should be made live. During review, no changes can be made to your link content. If you wish to make changes, please try again later");
}

function warn_save_changes_live()
{
alert("Your link is currently live. Any changes that are made to the link now will not be reflected on the live site. Please submit your link for approval after you are satisfied with the changes. Once these changes have been approved your link will be updated with the changes.");
}


function recheck_reciprocal_link_page_url($temp)
{
$company_website_url=document.link_system.company_website_url.value;
$link_target=document.link_system.link_target.value;
$reciprocal_link_page=document.link_system.reciprocal_link_page.value;
window.location.href=$temp+"?"+"reciprocal_link_page?"+"company_website_url="+$company_website_url+"&link_target="+$link_target+"&reciprocal_link_page="+$reciprocal_link_page;
}

function recheck_url_manager($temp)
{
$company_name=document.link_system.company_name.value;
$company_website_url=document.link_system.company_website_url.value;
$company_address_line1=document.link_system.company_address_line1.value;
$company_address_line2=document.link_system.company_address_line2.value;
$company_city=document.link_system.company_city.value;
$company_county=document.link_system.company_county.value;
$company_country=document.link_system.company_country.value;
$company_postcode=document.link_system.company_postcode.value;
$company_telephone=document.link_system.company_telephone.value;
$company_email=document.link_system.company_email.value;
if (document.link_system.display_company_address.checked)
	{
	$display_company_address=1;
	}
	else
	{
	$display_company_address=0;
	}
if (document.link_system.display_company_telephone.checked)
	{
	$display_company_telephone=1;
	}
	else
	{
	$display_company_telephone=0;
	}
$contact_person_name=document.link_system.contact_person_name.value;
$contact_person_email=document.link_system.contact_person_email.value;
$contact_person_telephone=document.link_system.contact_person_telephone.value;
if (document.link_system.display_contact_person_details.checked)
	{
	$display_contact_person_details=1;
	}
	else
	{
	$display_contact_person_details=0;
	}
$reciprocal_link_page=document.link_system.reciprocal_link_page.value;
$short_description=document.link_system.short_description.value;
$long_description=document.link_system.long_description.value;
$link_target=document.link_system.link_target.value;


window.location.href=$temp+"&"+"company_name="+$company_name+"&company_website_url="+$company_website_url+"&company_address_line1="+$company_address_line1+"&company_address_line2="+$company_address_line2+"&company_city="+$company_city+"&company_county="+$company_county+"&company_country="+$company_country+"&company_postcode="+$company_postcode+"&company_telephone="+$company_telephone+"&company_email="+$company_email+"&display_company_address="+$display_company_address+"&display_company_telephone="+$display_company_telephone+"&contact_person_name="+$contact_person_name+"&contact_person_email="+$contact_person_email+"&contact_person_telephone="+$contact_person_telephone+"&display_contact_person_details="+$display_contact_person_details+"&reciprocal_link_page="+$reciprocal_link_page+"&short_description="+$short_description+"&long_description="+$long_description+"&link_target="+$link_target;
}

function recheck_link_target_url_manager($temp)
{
$company_website_url=document.link_system.company_website_url.value;
$link_target=document.link_system.link_target.value;
window.location.href=$temp+"link_target&"+"company_website_url="+$company_website_url+"&link_target="+$link_target;
}

function recheck_reciprocal_link_page_url_manager($temp)
{
$company_website_url=document.link_system.company_website_url.value;
$link_target=document.link_system.link_target.value;
$reciprocal_link_page=document.link_system.reciprocal_link_page.value;
window.location.href=$temp+"&"+"company_website_url="+$company_website_url+"&link_target="+$link_target+"&reciprocal_link_page="+$reciprocal_link_page;
}


function is_Changed (obj,hidden_fields,ignore_fields,url)
	{
	if (isFormModified(obj,hidden_fields,ignore_fields))
		{
		alert ("Warning!!\nIt Seems that you have made changes to the information about your link.\nPlease Save Changes First Before Proceeding");
		}
		else
		{
		window.location.href=url;
		}
	
	}
			


