// ---  R O U T I N E S  ------------------------------------------------------------------------------
function get_radio_value(radio_array)
{
	var i;
	for (i = 0; i < radio_array.length; ++ i)
		if (radio_array[i].checked)
			return radio_array[i].value;
	return ' ';
}

function ShowHide(elementid)
{
	var element = document.getElementById(elementid);
	if(element.style.display != "block")
	{
		element.style.display = "block"
	}
	else
	{				
		element.style.display = "none"
	}
}
// --------------------Determine browser and version.------------------------

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

//------------------------ Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 0;

function dragStart(event, id) {

  var el;
  var x, y;

  // If an element id was given, find it. Otherwise use the element being
  // clicked on.

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // If this is a text node, use its parent element.

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Update element's z-index.

  dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  var x, y;

  // Get cursor position with respect to the page.
  
  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move drag element by the same amount the cursor has moved.

  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {

  // Stop capturing mousemove and mouseup events.

  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}

//----Ajax Related functions-------------------------

function createRequestObject(){
	var request_o;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		request_o = new XMLHttpRequest();
	}
	return request_o;
}

var http = createRequestObject();

function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") {
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
   }
   return retValue;
}

function send_mail(){
	var frm = eval("document.form1");	
	if( (trim(frm.name.value) == '') ){
		document.getElementById('status').innerHTML = '<font color="ff000"><b>Please input your name...</b></font><br><br>';
		return false;
	}
	if( (trim(frm.email_ID1.value) == '') && (trim(frm.email_ID2.value) == '') && (trim(frm.email_ID3.value) == '') ){
		document.getElementById('status').innerHTML = '<font color="ff000"><b>Please input atleast one email address...</b></font><br><br>';
		return false;
	}

	if(frm.email_ID1.value != ''){
		var demo
		var demo= frm.email_ID1.value;
		var AtSym    = demo.indexOf('@')
		var period1  = demo.indexOf('.')
		var Period   = demo.lastIndexOf('.')
		var Space    = demo.indexOf(' ')
		var Length   = demo.length - 1 

		if ((AtSym < 1) || 
		(Period <= AtSym+1) || 
		(period1 < 1) ||
		(Period == Length ) ||
		(Space  != -1))    
		{
			document.getElementById('status').innerHTML = '<font color="ff000"><b>Please enter email address in correct format</b></font><br><br>';
			return false;
		}
	}
	if(frm.email_ID2.value != ''){
		var demo
		var demo= frm.email_ID2.value;
		var AtSym    = demo.indexOf('@')
		var period1  = demo.indexOf('.')
		var Period   = demo.lastIndexOf('.')
		var Space    = demo.indexOf(' ')
		var Length   = demo.length - 1 

		if ((AtSym < 1) || 
		(Period <= AtSym+1) ||
		(period1 < 1) ||
		(Period == Length ) || 
		(Space  != -1))    
		{
			document.getElementById('status').innerHTML = '<font color="ff000"><b>Please enter email address in correct format</b></font><br><br>';
			return false;
		}
	}
	if(frm.email_ID3.value != ''){
		var demo
		var demo= frm.email_ID3.value;
		var AtSym    = demo.indexOf('@')
		var period1  = demo.indexOf('.')
		var Period   = demo.lastIndexOf('.')
		var Space    = demo.indexOf(' ')
		var Length   = demo.length - 1 

		if ((AtSym < 1) || 
		(Period <= AtSym+1) || 
		(period1 < 1) ||
		(Period == Length ) || 
		(Space  != -1))   
		{
			document.getElementById('status').innerHTML = '<font color="ff000"><b>Please enter email address in correct format</b></font><br><br>';
			return false;
		}
	}
	http.open('get', 'internal_request.php?action=send_mail&name=' + frm.name.value + '&mailID1=' + frm.email_ID1.value + '&mailID2=' + frm.email_ID2.value + '&mailID3=' + frm.email_ID3.value + '&email_body=' 
			+ frm.email_body.value);
	http.onreadystatechange = handleRequest;
	http.send(null);
}

function handleRequest(){
	if(http.readyState == 1){
		document.getElementById('ProgressIndicator').style.display = "block";
	}
	if(http.readyState == 4){ 
		var response = http.responseText;

		if(response == 'success'){
			document.getElementById('ProgressIndicator').style.display = "none";
			document.getElementById('status').innerHTML = '<font color="green"><b>Your invitation has been sent...</b></font><br><br>';
			return false;
		}else{
			document.getElementById('ProgressIndicator').style.display = "none";
			document.getElementById('status').innerHTML = '<font color="#ff000"><b>There is an error in sending mail...</b></font><br><br>';
			return false;
		}
	}
}

// ---  V A L I D A T I O N S  ------------------------------------------------------------------------

function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

// This is the function that performs form verification. It will be invoked
// from the onSubmit() event handler. The handler should return whatever
// value this function returns.
function verify(f)
{
	var msg;
    var empty_fields = "";
    var errors = "";
    // Loop through the elements of the form, looking for all 
    // text and textarea elements that have a "required" property
    // defined. Then, check for fields that are empty and make a list of them.
    // Also, if any of these elements have a "min" or a "max" property defined,
    // then verify that they are numbers and that they are in the right range.
    // Put together error messages for fields that are wrong.
    for(var i = 0; i < f.length; i++) {

        var e = f.elements[i];
		var efilter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

        if (((e.type == "text") || (e.type == "textarea")) && e.required) {
            // first check if the field is empty
            if ((e.value == null) || (e.value == "") || isblank(e.value)) {
                empty_fields += "\n          " + e.name;
                continue;
            }
		}	
        if (!isblank(e.value) && ((e.type == "text") || (e.type == "textarea"))) {
            // Now check for fields that are supposed to be numeric.
            if ((e.min != null) || (e.max != null)) { 
                var v = parseFloat(e.value);
                if (isNaN(v) || !e.numeric || 
                    ((e.min != null) && (v < e.min)) || 
                    ((e.max != null) && (v > e.max))) {
                    errors += "- The field " + e.name + " must be a number";
                    if (e.min != null) 
                        errors += " that is greater than " + e.min;
                    if (e.max != null && e.min != null) 
                        errors += " and less than " + e.max;
                    else if (e.max != null)
                        errors += " that is less than " + e.max;
                    errors += ".\n";
                }
            }
        }
//        if ((e.type == "radio") && e.required) {
//           // make sure one value is checked
//		   	for (var j = 0; j < e.length; ++ j)
//				if (e[j].checked)
//                continue;
//            }
//			if j > e.length {
//				errors += "- Please select a '" + e.name + "' option.\n";
//			}
//		}			
       // Now, if it is an email type field, verify it.
		if ((e.emailtype) && !efilter.test(e.value)){
			 errors += "- The field  '" + e.name + "'  must be a valid email address.\n";
		}
    }
    // Now, if there were any errors, then display the messages, and
    // return false to prevent the form from being submitted. Otherwise
    // return true.
    if (!empty_fields && !errors) return true;
    msg  = "____________________________________________________________\n\n"
    msg += "The Questionnaire was not submitted because of the following error(s).\n";
    msg += "Please correct these error(s) and re-submit.\n";
    msg += "____________________________________________________________\n\n"
    if (empty_fields) {
        msg += "- The following required field(s) are empty:" 
                + empty_fields + "\n";
    }
    if (errors) msg += "\n";    
	msg += errors;
    alert(msg);
    return false;
}

// ---  S E C U R I T Y  ---------------------------------------------------------------------------

// Disable Select-Text
//form tags to omit in NS6+:

var omitformtags=["input", "textarea", "select"]
omitformtags='|'+omitformtags.join("|")+'|';

function disableselect(e){
if (typeof document.onselectstart!="undefined") var thisTarget = window.event.srcElement; else var thisTarget = e.target;
thisTarget ='|'+thisTarget.tagName.toLowerCase()+'|';
if (omitformtags.indexOf(thisTarget)==-1)
return false
}

function reEnable(){
return true
}

if (typeof document.onselectstart!="undefined")
document.onselectstart=disableselect
else{
document.onmousedown=disableselect
document.onmouseup=reEnable
}

// Disable Right-Click
var message="";
function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if 
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message);return false;}}}
if (document.layers) 
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}
document.oncontextmenu=new Function("return false")

// ---  R O L L O V E R S  ------------------------------------------------------------------------

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

var preloadFlag = false;
function preloadImages() {
	if (document.images) {
		profile_over = newImage("images/profile-over.gif");
		services_over = newImage("images/services-over.gif");
		portfolio_over = newImage("images/portfolio-over.gif");
		methodology_over = newImage("images/methodology-over.gif");
		contact_over = newImage("images/contact-over.gif");
		manage_over = newImage("images/manage-over.gif");
		preloadFlag = true;
	}
}

// ---  A D O B E ------------------------------------------------------------------------

//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_AX_RunContent(){
  var ret = AC_AX_GetArgs(arguments);
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

function AC_AX_GetArgs(args){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "pluginspage":
      case "type":
      case "src":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "data":
      case "codebase":
      case "classid":
      case "id":
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  return ret;
}
