/*
Studio 2 Online (www.s2o.co.uk)
-----------------------------------------------------------
This file contains functions used in planetbikes.co.uk

Author: andrew mcmahon
Date: 2006-05-15
*/


function in_array(needle, haystack){
	for (var i in haystack){
		if(needle == haystack[i]){
			return true;
		}
	}
	return false;
}


function isNumeric(input){
	var allowed_chars = new Array(1,2,3,4,5,6,7,8,9,0);
	for(var i = 0; i < input.length; i++){
		if(!in_array(input.charAt(i), allowed_chars)){
			return false;
		}
	}
	return true;	
}


function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}


function empty(input){
	if(input == ""){
		return true;
	}
	
	if(typeof(input) == "boolean"){
		if(input != true && input != false){
			return true;
		}
	} 
	
	if(typeof(input) == "number"){
		if(input == 0){
			return true;
		}
	} 
	
	if(typeof(input) == "string"){
		if(input == ""){
			return true;
		}
	} 
	
	if(typeof(input) == "object"){
		if(input.length == 0){
			return true;
		}
	}
	return false;
}


function getErrorMessage(input){
	var output = "";
	for(var i in input){
		output += input[i] + "\n";
	}
	return output;
}


function isEmailAddr(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}

	if (str.indexOf(at,(lat+1))!=-1){
	return false;
	}
	
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	return false;
	}
	
	if (str.indexOf(dot,(lat+2))==-1){
	return false;
	}
	
	if (str.indexOf(" ")!=-1){
	return false;
	}

	return true;					
}


function CheckNewsletterForm2(){
	var alertmessage = "";

	if(empty(document.getElementById("newsletter_name").value)){
		alertmessage += "\n - Name";
	}

	if(empty(document.getElementById("newsletter_email").value)){
		alertmessage += "\n - Email";
	}
	
	if(!empty(alertmessage)){
		alert("The following fields must be completed." + alertmessage);
		return false;
	}

	return true;
}


function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function


function getSelectedOptionValue(formObject){
	if(formObject.options){
		return formObject.options[getSelectedOption(formObject)].value;
	}else{
		//not a set of options
		return formObject.value;
	}
}

function getSelectedOption(formObject){
	if(formObject.options){
		return formObject.selectedIndex;
	}else{
		return formObject.value;
	}
}

function PCase(STRING){
	var strReturn_Value = "";
	var iTemp = STRING.length;
	if(iTemp==0){
		return"";
	}
	var UcaseNext = false;
	strReturn_Value += STRING.charAt(0).toUpperCase();
	for(var iCounter=1;iCounter < iTemp;iCounter++){
		if(UcaseNext == true){
			strReturn_Value += STRING.charAt(iCounter).toUpperCase();
		}else{
			strReturn_Value += STRING.charAt(iCounter).toLowerCase();
		}
		var iChar = STRING.charCodeAt(iCounter);
		if(iChar == 32 || iChar == 45 || iChar == 46){
			UcaseNext = true;
		}else{
			UcaseNext = false
		}
		if(iChar == 99 || iChar == 67){
			if(STRING.charCodeAt(iCounter-1)==77 || STRING.charCodeAt(iCounter-1)==109){
				UcaseNext = true;
			}
		}
	} //End For
	
	return strReturn_Value;

}


function TitleCase(STRING){
	var Exceptions = "/";
	var arrExceptions = Exceptions.split("|")
	
	STRING = PCase(STRING);
	
	var arrExValues;
	
	for(var iEx = 0; iEx < arrExceptions.length;iEx++){
		arrExValues = arrExceptions[iEx].split("/");
		var SearchThisValue = " " + arrExValues[0] + " ";
		var ReplaceThisValue = " " + arrExValues[1] + " ";
		while(STRING.indexOf(SearchThisValue)>-1){
			STRING = STRING.replace(SearchThisValue,ReplaceThisValue);
		}
	}
	
	return STRING;
} //End Function


function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	var sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	var cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

